【发布时间】:2016-09-12 15:15:54
【问题描述】:
我想假设给定类型使用方法(例如default())实现了某些特征(例如Default)。我想调用该方法并将其值存储到局部变量中。以下是它的总体思路:
macro_rules! get_default {
( $x:ty = $alias:ident ) => {
let $alias = $x::default();
};
}
fn main() {
// get_default!(i32 = z);
// println!("get_default! {:?} ", z);
println!("i32 default {:?} ", i32::default());
}
当我尝试得到错误时:
error: expected expression, found `i32`
--> <anon>:3:22
|>
3 |> let $alias = $x::default();
|> ^^
我理解这是因为它需要一个表达式,但我只想将输入限制为类型。有没有办法将$x 从ty 转换为expr,或者调用某个类型的方法(即使它可能丢失)。
【问题讨论】: