16 releases

Uses new Rust 2024

0.3.1 Nov 22, 2025
0.2.2 Aug 17, 2024
0.2.0 Jun 14, 2024
0.1.7 Mar 30, 2024
0.0.0 Jul 17, 2021

#532 in Asynchronous

MIT license

570KB
11K SLoC

The A10 io_uring library.

This library is meant as a low-level library safely exposing the io_uring API. For simplicity this only has two main types and a number of helper types:

  • Ring is a wrapper around io_uring used to poll for completion events.
  • AsyncFd is a wrapper around a file descriptor that provides a safe API to schedule operations.

Some modules provide ways to create AsyncFd, e.g. OpenOptions, others are simply a place to expose the Futures supporting the scheduled operations. The modules try to follow the same structure as that of the standard library.

Additional documentation can be found in the io_uring(7) manual.

Notes

Most I/O operations need ownership of the data, e.g. a buffer, so it can delay deallocation if needed. For example when a Future is dropped before being polled to completion. This data can be retrieved again by using the Extract trait.

Examples

Examples can be found in the examples directory of the source code, available online on GitHub.


A10

The A10 io_uring library.

This library is meant as a low-level library safely exposing the io_uring API. A10 is expected to be integrated into a Future runtime, but it can work as a stand-alone library.

For simplicity this only has two main types and a number of helper types:

  • Ring is a wrapper around io_uring used to poll for completion events.
  • AsyncFd is a wrapper around a file descriptor that provides a safe API to schedule operations.

Linux Required

Currently this requires a fairly new Linux kernel version, everything should work on Linux v6.1 and up.

Examples

Examples can be found in the examples directory of the source code.

Dependencies

~380KB