Crate cifg

source ·
Expand description

A macro for defining #[cfg] if/else blocks.

This macro is similar to the popular cfg-if crate, with minor differences in accepted syntax and allows usage in item or expression context.

This macro is also useable in #[no_std] environments.

§Examples

§Item Context

cifg::cifg! {
    if cfg(debug_assertions) {
        fn foo() { /* debug functionality */ }
    }
    else if cfg(windows) {
        fn foo() { /* windows release functionality */ }
    }
    else {
        fn foo() { /* non-windows release functionality */ }
    }
}

§Expression Context

fn foo() -> u32 {
    let bar = 100 + cifg::cifg! {
        if cfg(debug_assertions) {
            // debug functionality
            10
        }
        else if cfg(windows) {
            // windows release functionality
            11
        }
        else {
            // non-windows release functionality
            12
        }
    };

    bar % 3
}

Macros§

  • A macro for defining #[cfg] if/else blocks; usable in item or expression context.