14 个版本
0.2.3 | 2022 年 9 月 27 日 |
---|---|
0.2.2 | 2021 年 1 月 19 日 |
0.1.9 | 2020 年 12 月 31 日 |
0.1.7 | 2020 年 6 月 22 日 |
#619 in 异步
用于 2 crate
38KB
771 行
使用 Futures/async/await 简化 Linux AIO。
示例
使用 aiofut 调度文件写入
use futures::{executor::LocalPool, future::FutureExt, task::LocalSpawnExt};
use aiofut::AIOBuilder;
use std::os::unix::io::AsRawFd;
let mut aiomgr = AIOBuilder::default().build().unwrap();
let file = std::fs::OpenOptions::new()
.read(true)
.write(true)
.create(true)
.truncate(true)
.open("test")
.unwrap();
let fd = file.as_raw_fd();
// keep all returned futures in a vector
let ws = vec![(0, "hello"), (5, "world"), (2, "xxxx")]
.into_iter()
.map(|(off, s)| aiomgr.write(fd, off, s.as_bytes().into(), None))
.collect::<Vec<_>>();
// here we use futures::executor::LocalPool to poll all futures
let mut pool = LocalPool::new();
let spawner = pool.spawner();
for w in ws.into_iter() {
let h = spawner.spawn_local_with_handle(w).unwrap().map(|r| {
println!("wrote {} bytes", r.0.unwrap());
});
spawner.spawn_local(h).unwrap();
}
pool.run();
依赖项
~0.7–6.5MB
~17K SLoC