如何在Rust中指针类型不同时生成编译错误?

ide*_*n42 4 rust

我们可能希望确保两种类型兼容,尤其是在编写宏时.例如,检查两个参数是否相同.

如何最好地确保类型兼容?


类似于这个C问题,但对于Rust.

ide*_*n42 5

确保类型匹配的一种简单方法是将它们分配给永不执行的块中的虚拟值.

macro_rules! check_type_pair {
    ($a:expr, $b:expr) => {
        if false {
            let _type_check = if false {$a} else {$b};
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在宏中你可以简单地添加:

check_type_pair!($arg_1, $arg_2);
Run Code Online (Sandbox Code Playgroud)

查看示例用法.