Skip to content

rust: Stream ownership is cumbersome #1190

@alexcrichton

Description

@alexcrichton

Currently streams implement Sink and Stream for Vec<T>, but this has a number of implications:

  • For primitives such as stream<u8> that means that sending chunks of data requires sending chunks of allocations. There's no chance to reuse buffers or otherwise have more efficient buffer handling.
  • For non-primitives such as stream<list<u8>> it's possible that a write doesn't fully send everything. There's no way to recover items which weren't sent in a chunk. I realize right now that write-as-generated writes everything in a loop, but I think this is probably also something worth changing.
  • If a write is cancelled there's no way currently to recover the original chunk of items that were being sent.

Metadata

Metadata

Assignees

No one assigned

    Labels

    asyncRelated to async/streams in the component model.gen-rustRelated to bindings for Rust-compiled-to-WebAssembly

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions