1 个不稳定版本
0.1.0 | 2021 年 1 月 21 日 |
---|
#2203 在 异步
7KB
107 代码行
没有 AsyncDrop,等待正在被丢弃的项目是非平凡的。
此包装器允许等待,并可以在其中用于在不再使用时对 Arc 或类似内容的异步清理。
use dropbear::DropBear;
let (bearer, notify) = DropBear::new(x.clone());
drop(bearer);
assert_eq!(notify.await.unwrap(), x); // => true
use dropbear::DropBear;
let (bearer, notify) = DropBear::new(item);
let arc = Arc::new(bearer);
// Pass the arc elsewhere, handing ownership over
// Or clone it elsewhere, do some work here, then drop your copy
{
// ...
}
// Receive the original item once the last Arc instance is dropped
let original_item = notify.await.unwrap();
// ... and perform async cleanup on the contents
perform_cleanup(original_item).await;
依赖项
~2.6–4MB
~61K SLoC