Crate cfg_feature_groups

Source
Expand description

cfg_feature_groups: define feature groups to improve conditional compilation management.

This library allows one to define feature group, that may only take one value out of set. Feature groups defined in Cargo.toml as metadata:

[package.metadata.feature_groups]
log = ["dummy", "semihosting", "itm"]

Where "dummy", "semihosting", "itm" are features defined separately. Once feature groups are defined, they can be checked during build time and turned into cfg attributes:

[build-dependencies]
cfg_feature_groups = "..."
use cfg_feature_groups::setup_feature_groups;
fn main() {
    setup_feature_groups();
}

Then in your program you may use something like this:

#[cfg(log = "itm")]
fn define_itm() {}

setup_feature_groups will ensure that one and only one option is defined for each feature group.

See full example in example dir.

Functionsยง

  • Reads feature_groups from Cargo metadata and process supplied features. Checks that for every feature group only one option is provided. Feature groups are turned into cfg attributes with supplied value.