featurecomb 0.2.0

Define feature groups and enforce relations between Cargo features from your manifest
Documentation
---
source: featurecomb/src/lib.rs
expression: rust
---
#[cfg(
    all(
        feature = "tls",
        not(any(feature = "native-openssl", feature = "vendored-openssl"))
    )
)]
compile_error!(
    "feature `tls` requires that some features from feature group `openssl` be enabled.\nCandidate features: `native-openssl`, `vendored-openssl`"
);

#[cfg(all(feature = "tls", not(any(feature = "tls-12", feature = "tls-13"))))]
compile_error!(
    "feature `tls` requires that some features from feature group `tls-version` be enabled.\nCandidate features: `tls-12`, `tls-13`"
);

#[cfg(all(feature = "usb-hid", not(feature = "usb")))]
compile_error!("feature `usb-hid` requires that feature `usb` be enabled as well");

#[cfg(all(feature = "llvm-16", feature = "llvm-17"))]
compile_error!(
    "features `llvm-16` and `llvm-17` are part of the `llvm-version` feature group and cannot be enabled at the same time"
);

#[cfg(all(feature = "llvm-16", feature = "llvm-18"))]
compile_error!(
    "features `llvm-16` and `llvm-18` are part of the `llvm-version` feature group and cannot be enabled at the same time"
);

#[cfg(all(feature = "llvm-17", feature = "llvm-18"))]
compile_error!(
    "features `llvm-17` and `llvm-18` are part of the `llvm-version` feature group and cannot be enabled at the same time"
);

#[cfg(not(any(feature = "llvm-16", feature = "llvm-17", feature = "llvm-18")))]
compile_error!(
    "feature group `llvm-version` requires that one of its features be enabled.\nCandidates: `llvm-16`, `llvm-17`, `llvm-18`"
);

#[cfg(all(feature = "native-openssl", feature = "vendored-openssl"))]
compile_error!(
    "features `native-openssl` and `vendored-openssl` are part of the `openssl` feature group and cannot be enabled at the same time"
);