3个版本
0.1.2 | 2020年10月23日 |
---|---|
0.1.1 | 2020年10月23日 |
0.1.0 | 2020年10月23日 |
#1389 in 异步
13KB
iterstream
此crate提供了一个可以将Iterator
转换为Stream
的trait。它使用futures
crate创建一个在单独的线程池中获取迭代器值的执行器
它不同于iter()
函数,因为迭代器消耗是在单独的线程中完成的。如果迭代器是阻塞的,流将是真正的异步
用于执行任务的ThreadPool
可以是自动创建的(当使用to_stream
时),或者可以使用to_stream_with_pool
显式指定。后者更灵活(也更高效),因为它允许多个流共享同一个池
示例
use iterstream::IterStream;
use futures::stream::StreamExt;
use futures::executor::ThreadPool;
let vals = vec![1, 2, 3, 4, 5];
let stream = vals.into_iter().to_stream_with_pool(10, ThreadPool::new().unwrap());
let c: Vec<_> = stream.collect().await;
assert_eq!(vec![1,2,3,4, 5], c);
作者
- Michaël Hauspie
许可
- 此crate根据CeCILL-B许可提供
依赖项
~0.7–1MB
~18K SLoC