1 个不稳定版本
0.1.0-alpha.0 | 2023年1月29日 |
---|
#567 in 异步
350KB
10K SLoC
slim-futures
提供 Future
和 Stream
组合子作为 futures
库的补充,但侧重于小内存占用和小二进制文件大小。
优势
- 占用内存最小。
- 一些组合子比其
futures
对应物具有更少的内部状态,这有利于二进制文件大小。 - 支持更多
Try
类型,而不仅仅是Result
类型。 - 提供异步和同步版本的组合子,其中异步版本有
_async
后缀。 - 提供
futures
库未实现的其他组合子。
劣势
- 组合子不支持
FnOnce
函数。 - 除非它是免费的,否则组合子不实现
FusedFuture
和FusedStream
。 - 某些组合子要求用户提供一个方法,通过可变引用来获取对值的所有权。例如,
AsyncIteratorExt::slim_fold_by*
组合子要求用户指定一种方法从未来中提取值,可以是通过Copy
、Clone::clone
、mem::take
或某些用户提供的函数。 - 目前,项目处于早期阶段,API尚未稳定,实现尚未完全验证,请谨慎使用。
以下是slim-futures
提供的组合子列表及其futures
对应物。
slim-futures |
futures |
注意 |
---|---|---|
AsyncIteratorExt::slim_all |
||
AsyncIteratorExt::slim_all_async |
StreamExt::all |
|
AsyncIteratorExt::slim_and_then |
||
AsyncIteratorExt::slim_and_then_async |
TryStreamExt::and_then |
|
AsyncIteratorExt::slim_any |
||
AsyncIteratorExt::slim_any_async |
StreamExt::any |
|
AsyncIteratorExt::slim_filter |
||
AsyncIteratorExt::slim_filter_async |
StreamExt::filter |
|
AsyncIteratorExt::slim_filter_map |
||
AsyncIteratorExt::slim_filter_map_async |
StreamExt::filter_map |
|
AsyncIteratorExt::slim_find |
||
AsyncIteratorExt::slim_find_async |
||
AsyncIteratorExt::slim_find_map |
||
AsyncIteratorExt::slim_find_map_async |
||
AsyncIteratorExt::slim_flat_map |
||
AsyncIteratorExt::slim_flat_map_async |
StreamExt::flat_map |
|
AsyncIteratorExt::slim_flatten |
StreamExt::flatten |
|
AsyncIteratorExt::slim_fold_by* |
||
AsyncIteratorExt::slim_fold_async_by* |
StreamExt::fold |
|
AsyncIteratorExt::slim_for_each |
||
AsyncIteratorExt::slim_for_each_async |
StreamExt::for_each |
|
AsyncIteratorExt::slim_fuse |
StreamExt::fuse |
|
AsyncIteratorExt::slim_inspect |
StreamExt::inspect |
|
AsyncIteratorExt::slim_map |
StreamExt::map |
|
AsyncIteratorExt::slim_map_async |
StreamExt::then |
|
AsyncIteratorExt::slim_map_err |
TryStreamExt::map_err |
|
AsyncIteratorExt::slim_map_err_async |
||
AsyncIteratorExt::slim_map_ok |
TryStreamExt::map_ok |
|
AsyncIteratorExt::slim_map_ok_async |
||
AsyncIteratorExt::slim_map_while |
||
AsyncIteratorExt::slim_map_while_async |
||
AsyncIteratorExt::slim_or_else |
||
AsyncIteratorExt::slim_or_else_async |
TryStreamExt::or_else |
|
AsyncIteratorExt::slim_reduce |
||
AsyncIteratorExt::slim_reduce_async |
||
AsyncIteratorExt::slim_scan |
||
AsyncIteratorExt::slim_scan_async |
StreamExt::scan |
|
AsyncIteratorExt::slim_skip_while |
||
AsyncIteratorExt::slim_skip_while_async |
StreamExt::skip_while |
|
AsyncIteratorExt::slim_take_while |
||
AsyncIteratorExt::slim_take_while_async |
StreamExt::take_while |
|
AsyncIteratorExt::slim_try_fold_by* |
||
AsyncIteratorExt::slim_try_fold_async_by* |
TryStreamExt::try_fold |
遵循Iterator::try_fold 。 |
AsyncIteratorExt::slim_try_for_each |
||
AsyncIteratorExt::slim_try_for_each_async |
TryStreamExt::try_for_each |
遵循Iterator::try_for_each 。 |
AsyncIteratorExt::slim_zip |
StreamExt::zip |
|
FutureExt::slim_and_then |
||
FutureExt::slim_and_then_async |
TryFutureExt::and_then |
|
FutureExt::slim_err_into |
TryFutureExt::err_into |
|
FutureExt::slim_flatten |
FutureExt::flatten |
|
FutureExt::slim_flatten_async_iter |
FutureExt::flatten_stream |
|
FutureExt::slim_inspect |
FutureExt::inspect |
|
FutureExt::slim_inspect_err |
TryFutureExt::inspect_err |
|
FutureExt::slim_inspect_ok |
TryFutureExt::inspect_ok |
|
FutureExt::slim_into_option_future |
||
FutureExt::slim_into_result_future |
||
FutureExt::slim_into_try_future |
||
FutureExt::slim_map |
FutureExt::map |
|
FutureExt::slim_map_async |
FutureExt::then |
|
FutureExt::slim_map_err |
TryFutureExt::map_err |
|
FutureExt::slim_map_err_async |
||
FutureExt::slim_map_into |
FutureExt::map_into |
|
FutureExt::slim_map_ok |
TryFutureExt::map_ok |
|
FutureExt::slim_map_ok_async |
||
FutureExt::slim_map_ok_or_else |
TryFutureExt::map_ok_or_else |
|
FutureExt::slim_map_ok_or_else_async |
||
FutureExt::slim_never_error |
FutureExt::never_error |
|
FutureExt::slim_ok_into |
TryFutureExt::ok_into |
|
FutureExt::slim_or_else |
||
FutureExt::slim_or_else_async |
TryFutureExt::or_else |
|
FutureExt::slim_raw_map_ok_or_else_async |
||
FutureExt::slim_try_flatten |
TryFutureExt::try_flatten |
|
FutureExt::slim_try_flatten_err |
||
FutureExt::slim_unit_error |
FutureExt::unit_error |
|
FutureExt::slim_unwrap_or_else |
TryFutureExt::unwrap_or_else |
|
FutureExt::slim_unwrap_or_else_async |
||
err_by* |
err |
|
lazy |
lazy |
|
ok_by* |
ok |
|
raw_select |
||
ready_by* |
ready |
|
select_either |
||
try_select_either |
依赖
~750KB
~15K SLoC