4 个版本
0.2.16 | 2024年7月7日 |
---|---|
0.2.14 |
|
0.2.11 |
|
0.2.9 |
|
0.1.2 |
|
#121 in 异步
5,414 每月下载次数
用于 32 个 crate(5 个直接使用)
51KB
1.5K SLoC
dark-std
dark-std 是异步的实现
- defer! (defer 宏)
- SyncHashMap (异步 HashMap)
- SyncBtreeMap (异步 BtreeMap)
- SyncVec (异步 Vec)
- WaitGroup (异步/阻塞所有支持 WaitGroup)
- AtomicDuration (原子持续时间)
例如
#[tokio::test]
pub async fn test_get() {
let m = SyncHashMap::<i32, i32>::new();
let insert = m.insert(1, 2);
let g = m.get(&1).unwrap();//don't need lock and await
assert_eq!(&2, g);
}
等待组
use std::time::Duration;
use tokio::time::sleep;
use dark_std::sync::WaitGroup;
#[tokio::test]
async fn test_wg() {
let wg = WaitGroup::new();
let wg2 = wg.clone();
tokio::spawn(async move {
sleep(Duration::from_secs(1)).await;
drop(wg2);
});
let wg2 = wg.clone();
tokio::spawn(async move {
sleep(Duration::from_secs(1)).await;
drop(wg2);
});
wg.wait_async().await;
println!("all done");
}
依赖
~1.4–6.5MB
~37K SLoC