Singleflight in async style.
```rust use singleflight_async::SingleFlight;
async fn main() { let group = SingleFlight::new(); let mut futures = Vec::new(); for _ in 0..10 { futures.push(group.work("key", || async { println!("will sleep to simulate async task"); tokio::time::sleep(std::time::Duration::from_millis(100)).await; println!("real task done"); "my-result" })); }
for fut in futures.into_iter() {
assert_eq!(fut.await, "my-result");
println!("task finished");
}
} ```
The output will be like:
will sleep to simulate async task
real task done
task finished
task finished
task finished
task finished
task finished
task finished
task finished
task finished
task finished
task finished