Macro std::compile_error 1.20.0[−][src]
macro_rules! compile_error { ($msg:expr $(,)?) => { ... }; }
Expand description
导致编译失败,并遇到给定的错误消息。
当 crate 使用条件编译策略为错误条件提供更好的错误消息时,应使用此宏。
它是 panic!
的编译器级别的形式,但在 编译 而不是 运行时 会发出错误。
Examples
宏和 #[cfg]
环境就是两个这样的示例。
如果传递了无效值,则发出更好的编译器错误。 没有最终分支,编译器仍然会发出错误,但是错误消息不会提及两个有效值。
ⓘ
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); // ^ 将在编译时失败,并显示消息 "This macro only accepts `foo` or `bar`"Run
如果许多功能之一不可用,则发出编译器错误。
ⓘ
#[cfg(not(any(feature = "foo", feature = "bar")))] compile_error!("Either feature \"foo\" or \"bar\" must be enabled for this crate.");Run