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
You can also use this command: rustc --print target-list
.
Each triple are formatted as follows: {arch}-{vendor}-{sys}-{abi}.
For example, the triple 'arm-unknown-linux-gnueabihf' refers to:
See also https://internals.rust-lang.org/t/all-the-rust-features/4322 for a comprehensive list of features.
Bear in mind that some / most of the features won't be stabilized so will only be available in nightly for some time and are subject to breaking improvements / upgrades until they are either stabilized or discontinued.
Features in rust nightly is survival of the fittest.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With