當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust compile_error用法及代碼示例


本文簡要介紹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-lang.org大神的英文原創作品 Macro std::compile_error。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。