Rust has the ability to check configuration at build time with, e.g., #[cfg(target_os = "linux")]
or if cfg!(target_os = "linux") {...}
, where target_os
is a feature.
Is there a list of all (or, at least, commonly used) features that can be checked in Rust?
See related question regarding attributes Is there an exhaustive list of standard attributes anywhere?.
The "Conditional compilation" section of the Reference has a list of configurations that must be defined (as of Rust 1.14):
target_arch
with values like:
x86
x86_64
mips
powerpc
powerpc64
arm
aarch64
target_os
with values like:
windows
macos
ios
linux
android
freebsd
dragonfly
bitrig
openbsd
netbsd
target_family
with values like:
unix
windows
unix
(shortcut for target_family
)windows
(shortcut for target_family
)target_env
with values like:
gnu
msvc
musl
""
(empty string)target_endian
with values:
little
big
target_pointer_width
with values like:
32
64
target_has_atomic
with values like:
8
16
32
64
ptr
target_vendor
with values like:
apple
pc
unknown
test
debug_assertions