问题
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?.
回答1:
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 fortarget_family
)windows
(shortcut fortarget_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
回答2:
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:
- architecture: arm
- vendor: unknown. In this case, no vendor was specified.
- system: linux
- ABI: gnueabihf
回答3:
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.
来源:https://stackoverflow.com/questions/41742046/is-there-a-list-of-all-cfg-features