| Crates.io | tokio-iocp |
| lib.rs | tokio-iocp |
| version | 0.2.3 |
| created_at | 2022-09-08 16:27:23.87888+00 |
| updated_at | 2023-08-24 08:55:39.4981+00 |
| description | IOCP support for the Tokio asynchronous runtime. |
| homepage | |
| repository | https://github.com/Berrysoft/tokio-iocp |
| max_upload_size | |
| id | 661160 |
| size | 180,725 |
This crate, inspired by tokio-uring, provides IOCP for Tokio by exposing a new Runtime that is
compatible with Tokio but also can drive IOCP-backed resources. Any
library that works with Tokio also works with tokio-iocp. The crate
provides new resource types that work with IOCP.
Using tokio-iocp requires starting a tokio-iocp runtime. This
runtime internally manages the main (single-threaded) Tokio runtime and a IOCP driver.
use tokio_iocp::fs::File;
fn main() -> Result<(), Box<dyn std::error::Error>> {
tokio_iocp::start(async {
// Open a file
let file = File::open("hello.txt")?;
let buf = Vec::with_capacity(4096);
// Read some data, the buffer is passed by ownership and
// submitted to the kernel. When the operation completes,
// we get the buffer back.
let (res, buf) = file.read_at(buf, 0).await;
let n = res?;
// Display the contents
println!("{:?}", &buf);
Ok(())
})
}
Windows.
The tokio-iocp project is still very young. Currently, we are focusing on
supporting filesystem and network operations. We are looking forward to your contributions!
This project is licensed under the MIT license.