rustix 0.34.8

Safe Rust bindings to POSIX/Unix/Linux/Winsock2-like syscalls
Documentation
[package]
name = "rustix"
version = "0.34.8"
authors = [
    "Dan Gohman <dev@sunfishcode.online>",
    "Jakub Konka <kubkon@jakubkonka.com>",
]
description = "Safe Rust bindings to POSIX/Unix/Linux/Winsock2-like syscalls"
documentation = "https://docs.rs/rustix"
license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
repository = "https://github.com/bytecodealliance/rustix"
edition = "2018"
keywords = ["api", "file", "network", "safe", "syscall"]
categories = ["os::unix-apis", "date-and-time", "filesystem", "network-programming"]
exclude = ["/.*", "test-crates"]

[build-dependencies]
cc = { version = "1.0.68", optional = true }

[dependencies]
bitflags = "1.2.1"
itoa = { version = "1.0.1", default-features = false, optional = true }
io-lifetimes = { version = "0.6.0", default-features = false, optional = true }

# Special dependencies used in rustc-dep-of-std mode.
core = { version = "1.0.0", optional = true, package = "rustc-std-workspace-core" }
alloc = { version = "1.0.0", optional = true, package = "rustc-std-workspace-alloc" }
compiler_builtins = { version = '0.1.49', optional = true }

# The procfs feature needs once_cell.
[target.'cfg(any(target_os = "android", target_os = "linux"))'.dependencies]
once_cell = { version = "1.5.2", optional = true }

# On Linux on selected architectures, we have two supported backends: linux_raw
# and libc. The libc and errno dependencies are only enabled when the libc
# backend is in use.
[target.'cfg(all(not(rustix_use_libc), not(miri), target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", not(target_pointer_width = "32")), all(target_endian = "little", any(target_arch = "arm", target_arch = "aarch64", target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64")))))'.dependencies]
linux-raw-sys = { version = "0.0.46", default-features = false, features = ["general", "errno", "ioctl", "no_std"] }
errno = { version = "0.2.8", default-features = false, optional = true }
libc = { version = "0.2.118", features = ["extra_traits"], optional = true }

# On all other Unix-family platforms, and under Miri, we always use the libc
# backend, so enable its dependencies unconditionally.
[target.'cfg(any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", not(target_pointer_width = "32")), all(target_endian = "little", any(target_arch = "arm", target_arch = "aarch64", target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64")))))))'.dependencies]
errno = { version = "0.2.8", default-features = false }
libc = { version = "0.2.118", features = ["extra_traits"] }

[target.'cfg(all(any(target_os = "android", target_os = "linux"), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", not(target_pointer_width = "32")), all(target_endian = "little", any(target_arch = "arm", target_arch = "aarch64", target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64"))))))))'.dependencies]
# Some syscalls do not have libc wrappers, such as in `io_uring`. For these,
# we use the linux-raw-sys ABI and `libc::syscall`.
linux-raw-sys = { version = "0.0.46", default-features = false, optional = true, features = ["general", "no_std"] }

# For the libc backend on Windows, use the Winsock2 API in winapi.
[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3.9", features = ["ws2ipdef", "ws2tcpip"] }
[target.'cfg(all(windows, not(target_vendor = "uwp")))'.dependencies]
winapi = { version = "0.3.9", features = ["handleapi"] }

[dev-dependencies]
tempfile = "3.2.0"
libc = "0.2.118"
errno = "0.2.8"
serial_test = "0.6"
memoffset = "0.6.5"

[target.'cfg(not(target_os = "emscripten"))'.dev-dependencies]
criterion = "0.3"

[target.'cfg(windows)'.dev-dependencies]
ctor = "0.1.21"

[features]
default = ["std"]
std = ["io-lifetimes"]
rustc-dep-of-std = [
    "core",
    "alloc",
    "compiler_builtins",
    "linux-raw-sys/rustc-dep-of-std",
    "bitflags/rustc-dep-of-std",
    "libc/rustc-dep-of-std",
]

# Enable this to request the libc backend.
use-libc = ["errno", "libc"]

# Enable this to enable `proc_self_fd` (on Linux) and `ttyname`.
procfs = ["once_cell", "itoa"]

# Enable `rustix::io_uring::*` (on platforms that support it).
io_uring = ["linux-raw-sys"]

# Enable all API features.
all-apis = ["io_uring", "procfs"]

# Expose io-lifetimes' features for third-party crate impls.
async-std = ["io-lifetimes/async-std"]
tokio = ["io-lifetimes/tokio"]
os_pipe = ["io-lifetimes/os_pipe"]
socket2 = ["io-lifetimes/socket2"]
mio = ["io-lifetimes/mio"]
fs-err = ["io-lifetimes/fs-err"]
all-impls = ["async-std", "tokio", "os_pipe", "socket2", "mio", "fs-err"]

# Add Criterion configuration, as described here:
# <https://bheisler.github.io/criterion.rs/book/getting_started.html#step-1---add-dependency-to-cargotoml>
[[bench]]
name = "mod"
harness = false

[package.metadata.docs.rs]
features = ["all-apis"]
rustdoc-args = ["--cfg", "doc_cfg"]
targets = [
    "x86_64-unknown-linux-gnu",
    "i686-unknown-linux-gnu",
    "x86_64-apple-darwin",
    "x86_64-pc-windows-msvc",
]