io-ranges

Random-access I/O

Github Actions CI Status crates.io page docs.rs docs

This crate defines [ReadAt], [WriteAt], and [EditAt] traits which define interfaces to random-access or seekable devices, such as normal files, block devices, disk partitions, and memory buffers.

It also defines [RangeReader], [RangeWriter], and [RangeEditor] types which implement the above traits and and can be constructed from any file-like type. On Posix-ish platforms, including limited support for WASI, these types just contain a single file descriptor (and implement [AsRawFd]), plus any resources needed to safely hold the file descriptor live. On Windows, they contain a single file handle (and implement [AsRawHandle]).