Crate feature_gate

source ·
Expand description

Simple documented feature gates

This crates provides the [feature_gate] and [feature_gate_ex] macros for simple #[cfg(feature = "...")] macros that are properly documented on docs.rs.

Stable Rust

Note that for it to work properly on stable Rust, the following needs to be added to Cargo.toml for the time being (see Metadata for custom builds):

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

Example

The feature_gate macro allows the specification of a single feature:

use feature_gate::feature_gate;

#[feature_gate("test")]
struct FeatureGated;

#[test]
fn it_works() {
    let _ = FeatureGated {};
}

The feature_gate_ex macro allows the specification of a complex set of requirements:

use feature_gate::feature_gate_ex;

#[feature_gate_ex(any(test, feature = "test"))]
struct FeatureGated;

#[test]
fn it_works() {
    let _ = FeatureGated {};
}

Attribute Macros

  • The #[feature_gate(...)] macro conditionally compiles the element it is applied to if the provided feature is enabled.
  • The #[feature_gate_ex(...)] macro conditionally compiles the element it is applied to if the provided configureation is enabled.