async-rs / parallel-stream

Data parallelism library for async-std.
https://docs.rs/parallel-stream
Apache License 2.0
93 stars 16 forks source link

Requiring `T` to be `Sync` prevents use cases that work with `task:spawn` #17

Open athei opened 4 years ago

athei commented 4 years ago

I am wondering why ParallelStream requires T to be Sync where async_std::task::spawn requires the spawned future only to be Send + 'static.

I ran into this issue when trying to convert some code that executes the elements of a Stream in parallel using task::spawn directly + buffer_unordered.

The Stream is Send + 'static but not Sync and therefore I cannot convert it into a ParallelStream. Why does it need the T to be thread safe? It shouldn't be shared across the tasks, does it?

Trying to use it with this stream.