1.20.0[−][src]Macro std::compile_error
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. It's the compiler-level form of panic!
,
which emits an error at runtime, rather than during compilation.
Examples
Two such examples are macros and #[cfg]
environments.
Emit better compiler error if a macro is passed invalid values. Without the final branch, the compiler would still emit an error, but the error's message would not mention the two valid 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