Macro std::compile_error1.20.0[][src]

macro_rules! compile_error {
    ($msg:expr) => { ... };
    ($msg:expr,) => { ... };
}

Unconditionally causes compilation to fail with the given error message when encountered.

This macro should be used when a crate uses a conditional compilation strategy to provide better error messages for erroneous conditions.

Examples

Two such examples are macros and #[cfg] environments.

Emit better compiler error if a macro is passed invalid values.

This example deliberately fails to compile
macro_rules! give_me_foo_or_bar {
    (foo) => {};
    (bar) => {};
    ($x:ident) => {
        compile_error!("This macro only accepts `foo` or `bar`");
    }
}

give_me_foo_or_bar!(neither);
// ^ will fail at compile time with message "This macro only accepts `foo` or `bar`"Run

Emit compiler error if one of a number of features isn't available.

This example deliberately fails to compile
#[cfg(not(any(feature = "foo", feature = "bar")))]
compile_error!("Either feature \"foo\" or \"bar\" must be enabled for this crate.")Run