[][src]Crate aiofut

Straightforward Linux AIO using Futures/async/await.

Example

Use aiofut to schedule writes to a file:

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();

Structs

AIO

Represent the necessary data for an AIO operation. Memory-safe when moved.

AIOBatchSchedulerIn
AIOBatchSchedulerOut
AIOBuilder
AIOFuture

Represents a scheduled (future) asynchronous I/O operation, which gets executed (resolved) automatically.

AIOManager

Manager all AIOs.

AIONotifier

The state machine for finished AIO operations and wakes up the futures.

Enums

Error

Traits

EmulatedFailure

Type Definitions

AIOResult

The result of an AIO operation: the number of bytes written on success, or the errno on failure.

EmulatedFailureShared