Crate rustix[−][src]
Expand description
rustix
provides efficient memory-safe and I/O-safe wrappers to
POSIX-like, Unix-like, Linux, and Winsock syscall-like APIs, with
configurable backends.
The wrappers perform the following tasks:
- Error values are translated to
Result
s. - Buffers are passed as Rust slices.
- Out-parameters are presented as return values.
- Path arguments use
Arg
, so they accept any string type. - File descriptors are passed and returned via
AsFd
andOwnedFd
instead of bare integers, ensuring I/O safety. - Constants use
enum
s andbitflags
types. - Multiplexed functions (eg.
fcntl
,ioctl
, etc.) are de-multiplexed. - Variadic functions (eg.
openat
, etc.) are presented as non-variadic. - Functions and types which need
l
prefixes or64
suffixes to enable large-file support are used automatically, and file sizes and offsets are presented asi64
andu64
. - Behaviors that depend on the sizes of C types like
long
are hidden. - In some places, more human-friendly and less historical-accident names are used.
Things they don’t do include:
- Detecting whether functions are supported at runtime.
- Hiding significant differences between platforms.
- Restricting ambient authorities.
- Imposing sandboxing features such as filesystem path or network address sandboxing.
See cap-std
, system-interface
, and io-streams
for libraries
which do hide significant differences between platforms, and cap-std
which does perform sandboxing and restricts ambient authorities.
Modules
Export *Fd*
types and traits that we use in our public API, so that
our users don’t need to do anything special to use the same version.
Utilities related to FFI bindings.
Filesystem operations.
I/O operations.
Network-related operations.
Filesystem path operations.
Process-associated operations.
Random-related operations.
Thread-associated operations.
Time-related operations.