A fast, low-level I/O library for Rust providing non-blocking APIs and event notification for high-performance applications.
Mio is a metal I/O library for Rust that provides low-level, non-blocking I/O primitives and event notification across multiple platforms. It enables developers to build high-performance network applications with minimal overhead by directly interfacing with OS event systems like epoll, kqueue, and IOCP.
Systems programmers and developers building high-performance network servers, proxies, or custom async runtimes in Rust who need fine-grained control over I/O operations.
Developers choose Mio for its focus on zero runtime allocations, cross-platform consistency, and its role as the foundational I/O layer for the Tokio ecosystem, offering maximum performance with minimal abstraction.
Metal I/O library for Rust.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages OS-specific mechanisms like epoll, kqueue, and IOCP for efficient event notification, ensuring high performance across supported platforms as detailed in the 'Platforms' section.
Designed to avoid allocations during operation, minimizing overhead and maximizing throughput for I/O-intensive applications, a core feature emphasized in the README.
Provides low-level, non-blocking APIs for TCP, UDP, and Unix Domain Sockets, allowing fine-grained control over socket operations without blocking threads.
Serves as the metal I/O layer for Tokio and other async ecosystems, offering a reliable and performant base for building custom or existing runtimes.
Mio explicitly excludes file operations from its scope, forcing developers to use separate libraries or implement file handling manually, which can fragment I/O logic.
Requires users to manually register events, poll for readiness, and handle tokens, as shown in the example code, leading to more complex and error-prone code compared to automatic runtimes.
Lacks integrated timers and multi-threading features, requiring additional crates or custom implementations for common async patterns, increasing development effort.