Rust compile_error宏的用法和示例

compile_error是Rust中的一个宏,它用于在编译时生成一个错误信息;这在编写宏或者进行一些静态检查时非常有用;

compile_error 用法

compile_error宏只能用于编译时,无法在运行时生成错误,因此,传递给它的错误消息必须是编译时可确定的常量表达式;它通常用于编写宏或配合cfg宏使用:

用法一

#[cfg(target_os = "windows")]
compile_error!("doesn't compile on windows");

fn main(){

}

当在windows系统上编译这段代码时,将产生编译错误:

rust compile_error

用法二

macro_rules! give_me_foo_or_bar {
    (foo) => {};
    (bar) => {};
    ($x:ident) => {
        compile_error!("This macro only accepts `foo` or `bar`");
    }
}

fn main() {
    //give_me_foo_or_bar!(foo);
    give_me_foo_or_bar!(neither);
}

当标识符不是foobar时,将产生编译错误;

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/rust-macros/compile-error.html

分类: 计算机技术
推荐阅读:
使用Python求取前n个自然数的总和 给一个自然数n,使用Python求取前n个自然数的总和;
MIPS指令的寻址方式和数据类型 MIPS指令支持多种寻址方式和数据类型,以满足不同的应用需求。
Python实现链表 链表是一系列数据元素,它们通过指针连接在一起。每个数据元素都包含指向指针形式的另一个数据元素的连接。Python在其标准库中没有链接列表;作者将使用的节点的概念来实现链表。
Linux使两个文件的权限相同 在Linux系统下,你可以使用一条命令就能令两个文件的权限相同;
cannot fallthrough final case in switch的解决方法 在Go语言中,fallthrough 用于 switch 语句的 case 块中,它将会在当前 case 块执行完后执行下一个 case 块,不论下个 case 块条件是否匹配,但如果 fallthrough 后没有 case ,则会产生 cannot fallthrough final case in switch 的错误。
Linux终端显示文件中的特定行 在Linux系统下,你如果想在终端显示文件中的指定行,那么你只需这一条命令: