本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。