6 releases
0.2.3 | Aug 24, 2023 |
---|---|
0.2.2 | Apr 2, 2023 |
0.2.1 | Mar 27, 2023 |
0.1.4 | Mar 27, 2023 |
0.1.1 |
|
#1830 in Asynchronous
140KB
2.5K
SLoC
tokio-iocp
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.
Getting started
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(())
})
}
Requirements
Windows.
Project status
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!
License
This project is licensed under the MIT license.
Dependencies
~19–31MB
~400K SLoC