Example of how to use Conditional Compilation Macros in Rust

The correct way to test for a feature is feature = "name", as you can see in the documentation you linked if you scroll a bit:

As for how to enable or disable these switches, if you’re using Cargo,
they get set in the [features] section of your Cargo.toml:

[features]
# no features by default
default = []

# Add feature "foo" here, then you can use it. 
# Our "foo" feature depends on nothing else.
foo = []

When you do this, Cargo passes along a flag to rustc:

--cfg feature="${feature_name}"

The sum of these cfg flags will determine which ones get activated,
and therefore, which code gets compiled. Let’s take this code:

#[cfg(feature = "foo")]
mod foo {
}

In your case using the cfg! macro, this would map to cfg!(feature = "foo").

Leave a Comment