当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。