12 个版本
0.5.2 | 2022 年 11 月 30 日 |
---|---|
0.5.1 | 2022 年 11 月 30 日 |
0.5.0 | 2022 年 6 月 30 日 |
0.4.0 | 2021 年 10 月 20 日 |
0.0.6 | 2021 年 2 月 16 日 |
在 异步 中排名 #671
每月下载量 72
用于 2 crates
14KB
319 行代码(不包括注释)
异步 singleflight
lib.rs
:
tokio 的 singleflight 实现。
灵感来自 singleflight.
示例
use futures::future::join_all;
use std::sync::Arc;
use std::time::Duration;
use async_singleflight::Group;
const RES: usize = 7;
async fn expensive_fn() -> Result<usize, ()> {
tokio::time::sleep(Duration::new(1, 500)).await;
Ok(RES)
}
#[tokio::main]
async fn main() {
let g = Arc::new(Group::<_, ()>::new());
let mut handlers = Vec::new();
for _ in 0..10 {
let g = g.clone();
handlers.push(tokio::spawn(async move {
let res = g.work("key", expensive_fn()).await.0;
let r = res.unwrap();
println!("{}", r);
}));
}
join_all(handlers).await;
}
依赖项
~5–12MB
~112K SLoC