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 Results.
  • 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 and OwnedFd instead of bare integers, ensuring I/O safety.
  • Constants use enums and bitflags 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 or 64 suffixes to enable large-file support are used automatically, and file sizes and offsets are presented as i64 and u64.
  • 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.

Macros

A macro for ZStr literals.