3 个版本
0.1.0-alpha.2 | 2024 年 7 月 1 日 |
---|
#342 in 异步
每月 36 次下载
14KB
298 行
futures-finally
一个小型实用工具,提供了两个函数,用于在 future 或 stream 完成后执行 future。
动机
我编写这个小库是因为想要在 future 或 stream 完成后执行特定的异步代码。这可能包括等待另一个 future、通过通道发送数据等。
示例
Future 示例
use futures_finally::future::ThenFinallyFutureExt;
fn main() {
futures::executor::block_on(async move {
let mut val = 0;
futures::future::ready(())
.then_finally(|| async {
val = 1;
})
.await;
assert_eq!(val, 1);
});
}
Stream 示例
use futures::StreamExt;
use futures_finally::stream::FinallyStreamExt;
fn main() {
futures::executor::block_on(async move {
let mut val = 0;
let st = futures::stream::once(async { 0 }).finally(|| async {
val = 1;
});
futures::pin_mut!(st);
while let Some(v) = st.next().await {
assert_eq!(v, 0);
}
assert_eq!(val, 1);
});
}
MSRV
最低支持的 Rust 版本是 1.75,将来可能会改变。无法保证此库在旧版本的 Rust 上能正常工作。
许可证
根据您的选择,此库受 Apache 许可证,版本 2.0 或 MIT 许可证 许可。
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您提交的任何有意包含在作品中的贡献,都应如上所述双重许可,而不附加任何其他条款或条件。
依赖项
~1–1.6MB
~32K SLoC