Cargo Features

[dependencies]
rustix = { version = "0.38.40", default-features = false, features = ["std", "use-libc", "libc-extra-traits", "event", "fs", "io_uring", "mount", "net", "thread", "process", "shm", "time", "param", "procfs", "pty", "termios", "mm", "pipe", "rand", "stdio", "system", "runtime", "all-apis", "use-libc-auxv", "use-explicitly-provided-auxv", "linux_4_11", "linux_latest", "alloc", "rustc-dep-of-std", "cc", "try_close"] }
default = std, use-libc-auxv

By default, use std and use libc for aux values.

It turns out to be bizarrely awkward to obtain the aux values reliably and efficiently on Linux from anywhere other than libc. We can do it, but most users are better served by just using libc for this.

std default = alloc, libc-extra-traits

This enables use of std. Disabling this enables #![no_std], and requires Rust 1.64 or newer.

Enables std of bitflags, optional libc, and optional errno

Affects stdio::stdin, stdio::stdout, stdio::stderr

use-libc = libc, libc-extra-traits, libc_errno

Enable this to request the libc backend.

libc-extra-traits std use-libc?

Enable extra_traits in libc types, to provide Debug, Hash, and other trait impls for libc types.

Enables extra_traits of optional libc

event all-apis? io_uring?

Enable rustix::event::*.

fs all-apis? io_uring? param? procfs? pty? shm?

Enable rustix::fs::*.

Affects chdir::chdir, chroot::chroot, pivot_root::pivot_root, umask::umask, runtime::execveat, chdir::getcwd, rustix::path

io_uring all-apis? = event, fs, net

Enable rustix::io_uring::* (on platforms that support it).

Enables io_uring of linux-raw-sys ^0.4.14

mount all-apis?

Enable rustix::mount::*.

Affects rustix::path

net all-apis? io_uring?

Enable rustix::net::*.

Enables if_ether, net, netlink and xdp of linux-raw-sys ^0.4.14

Affects no_std::net, std::net, rustix::path

thread all-apis?

Enable rustix::thread::*.

Enables prctl of linux-raw-sys ^0.4.14

process all-apis?

Enable rustix::process::*.

Enables prctl of linux-raw-sys ^0.4.14

shm all-apis? = fs

Enable rustix::shm::*.

time all-apis?

Enable rustix::time::*.

param all-apis? = fs

Enable rustix::param::*.

procfs all-apis? = fs, itoa, once_cell

Enable this to enable rustix::io::proc_self_* (on Linux) and ttyname.

Affects rustix::procfs, tty::ttyname

pty all-apis? = fs, itoa

Enable rustix::pty::*.

termios all-apis?

Enable rustix::termios::*.

mm all-apis?

Enable rustix::mm::*.

pipe all-apis?

Enable rustix::pipe::*.

rand all-apis?

Enable rustix::rand::*.

stdio all-apis?

Enable rustix::stdio::*.

system all-apis?

Enable rustix::system::*.

Enables system of linux-raw-sys ^0.4.14

runtime all-apis?

Enable rustix::runtime::*. ⚠ This API is undocumented and unstable and experimental and not intended for general-purpose use. ⚠

Enables prctl of linux-raw-sys ^0.4.14

all-apis = event, fs, io_uring, mm, mount, net, param, pipe, process, procfs, pty, rand, runtime, shm, stdio, system, termios, thread, time

Enable all API features.

use-libc-auxv default

When using the linux_raw backend, should we use libc for reading the aux vectors, instead of reading them ourselves from /proc/self/auxv?

use-explicitly-provided-auxv

Enable "use-explicitly-provided-auxv" mode, with a public rustix::param::init function that must be called before anything else in rustix. This is unstable and experimental and not intended for general-purpose use.

linux_4_11 linux_latest?

OS compatibility features

Optimize for Linux 4.11 or later

linux_latest = linux_4_11

Enable all optimizations for the latest Linux versions.

alloc std

Enable features which depend on the Rust global allocator, such as functions that return owned strings or Vecs.

Affects epoll::wait, epoll::EventVec, event::kqueue, port::port_getn, abs::readlink, at::readlinkat, netdevice::index_to_name, sockopt::get_tcp_congestion, arg::Arg.to_string_lossy, arg::Arg.as_cow_c_str, arg::Arg.into_c_str, id::getgroups, procctl::get_reaper_pids, pty::ptsname, prctl::name, chdir::getcwd, tty::ttyname

rustc-dep-of-std = compiler_builtins, core, rustc-std-workspace-alloc

This is used in the port of std to rustix. This is experimental and not meant for regular use.

Enables rustc-dep-of-std of bitflags, optional compiler_builtins, and linux-raw-sys ^0.4.14

cc

Obsolete and deprecated.

try_close

Enable rustix::io::try_close. The rustix developers do not intend the existence of this feature to imply that anyone should use it.

Affects close::try_close

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

itoa procfs? pty?
core rustc-dep-of-std?

Enables rustc-std-workspace-core

Special dependencies used in rustc-dep-of-std mode.

rustc-std-workspace-alloc rustc-dep-of-std?

Enables rustc-std-workspace-alloc

not aliased here but in lib.rs because of name collision with the alloc feature

compiler_builtins rustc-dep-of-std?
libc not rustix_use_libc not miri linux le s390x arm arm64 64-bit riscv64 rustix_use_experimen… powerpc64 rustix_use_experimen… s390x rustix_use_experimen… mips rustix_use_experimen… mips32r6 rustix_use_experimen… mips64 rustix_use_experimen… mips64r6 x86 x86_64 64-bit not win rustix_use_libc miri not linux not le s390x not arm arm64 64-bit riscv64 rustix_use_experimen… powerpc64 rustix_use_experimen… s390x rustix_use_experimen… mips rustix_use_experimen… mips32r6 rustix_use_experimen… mips64 rustix_use_experimen… mips64r6 x86 x86_64 64-bit use-libc?
libc_errno not rustix_use_libc not miri linux le s390x arm arm64 64-bit riscv64 rustix_use_experimen… powerpc64 rustix_use_experimen… s390x rustix_use_experimen… mips rustix_use_experimen… mips32r6 rustix_use_experimen… mips64 rustix_use_experimen… mips64r6 x86 x86_64 64-bit not win rustix_use_libc miri not linux not le s390x not arm arm64 64-bit riscv64 rustix_use_experimen… powerpc64 rustix_use_experimen… s390x rustix_use_experimen… mips rustix_use_experimen… mips32r6 rustix_use_experimen… mips64 rustix_use_experimen… mips64r6 x86 x86_64 64-bit win use-libc?

Enables errno

once_cell android linux procfs?