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_64mipspowerpcpowerpc64armaarch64target_os with values like:
windowsmacosioslinuxandroidfreebsddragonflybitrigopenbsdnetbsdtarget_family with values like:
unixwindowsunix (shortcut for target_family)windows (shortcut for target_family)target_env with values like:
gnumsvcmusl"" (empty string)target_endian with values:
littlebigtarget_pointer_width with values like:
3264target_has_atomic with values like:
8163264ptrtarget_vendor with values like:
applepcunknowntestdebug_assertionsYou 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