我创建了一个宏函数my_macro:
macro_rules! my_macro {
($param1:expr, $param2:expr) => {
// ...
};
}
Run Code Online (Sandbox Code Playgroud)
如何断言这$param1是类型MyType?是否可以检查更复杂的内容,例如Box<T>?或者甚至返回类型?
我找到了assert_type_eq,但有关它的文档很混乱,而且我不知道如何使用它。或者这是否是完成任务的最佳方法。
我想将这些类型断言添加到我的宏中,以便更容易地找出它是否使用不正确。
将其分配给显式类型变量:
macro_rules! my_macro {
($param1:expr, $param2:expr) => {
{
let param1: u64 = $param1; // compiling will throw an error
// if the result isn't a u64
let param2: u64 = $param2;
param1 + param2
}
};
}
Run Code Online (Sandbox Code Playgroud)
这还有一个好处是可以确保表达式$param1只计算一次。