Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a list of all cfg features?

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?.

like image 474
ideasman42 Avatar asked Jan 19 '17 12:01

ideasman42


3 Answers

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
like image 161
Wesley Wiser Avatar answered Nov 20 '22 21:11

Wesley Wiser


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:

  1. architecture: arm
  2. vendor: unknown. In this case, no vendor was specified.
  3. system: linux
  4. ABI: gnueabihf
like image 8
Bo Lu Avatar answered Nov 20 '22 23:11

Bo Lu


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.

like image 1
Squirrel Avatar answered Nov 20 '22 22:11

Squirrel