本文简要介绍rust语言中 Macro std::compile_error
的用法。
用法
macro_rules! compile_error {
($msg : expr $(,) ?) => { ... };
}
遇到给定的错误消息时导致编译失败。
当 crate 使用条件编译策略来为错误条件提供更好的错误消息时,应使用此宏。这是 compiler-level 形式std::panic,但在期间发出错误汇编而不是在运行.
例子
两个这样的示例是宏和#[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);
// ^ will fail at compile time with message "This macro only accepts `foo` or `bar`"
如果许多函数之一不可用,则发出编译器错误。
#[cfg(not(any(feature = "foo", feature = "bar")))]
compile_error!("Either feature \"foo\" or \"bar\" must be enabled for this crate.");
相关用法
- Rust compiler_fence用法及代码示例
- Rust concat用法及代码示例
- Rust copy_nonoverlapping用法及代码示例
- Rust column用法及代码示例
- Rust concat_idents用法及代码示例
- Rust copy用法及代码示例
- Rust char.is_control用法及代码示例
- Rust char.is_alphanumeric用法及代码示例
- Rust char.len_utf16用法及代码示例
- Rust char.is_digit用法及代码示例
- Rust char.is_ascii_graphic用法及代码示例
- Rust char.decode_utf16用法及代码示例
- Rust char.is_uppercase用法及代码示例
- Rust catch_unwind用法及代码示例
- Rust char.to_ascii_lowercase用法及代码示例
- Rust char.is_ascii_uppercase用法及代码示例
- Rust canonicalize用法及代码示例
- Rust create_dir用法及代码示例
- Rust ctlz用法及代码示例
- Rust channel用法及代码示例
- Rust char.escape_unicode用法及代码示例
- Rust char.is_alphabetic用法及代码示例
- Rust char.is_ascii_control用法及代码示例
- Rust char.from_u32_unchecked用法及代码示例
- Rust char.is_ascii_alphabetic用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Macro std::compile_error。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。