我要打印!宏标识符(主要用于测试宏),但如果我这样做:
macro_rules! printname(
(
$name:ident;
) => (
println!("$name");
)
let this_name = "hello";
printname!(this_name);
Run Code Online (Sandbox Code Playgroud)
它只是打印
$名称
如果我println!("{}", $name);这样做,当然会替换变量this_name并打印
你好
我真正想要它做的是打印
这个名字
有没有办法引用元变量来获取它的值?
使多个枚举变体具有相同值的最佳方法是什么?这是我想要的一个例子,除了Rust不喜欢它.
pub enum Nums {
Num1 = 0,
Num2 = 1,
Num3 = 2,
Num4 = 3,
Num5 = 4,
FirstNum = 0,
MiddleNum = 2,
LastNum = 4,
}
Run Code Online (Sandbox Code Playgroud) 我想定义一个枚举,其中两个不同的值相等,但是我想这样做而不必显式写出Test :: B == Test :: B,Test :: C == Test的所有匹配情况: :C.
pub enum Test {
A,
B,
C,
AlsoA,
}
Run Code Online (Sandbox Code Playgroud)
也许这样的事情,但不必写出评论标记的部分
impl PartialEq for Test {
fn eq(&self, other: &Test) -> bool {
match (self, other) {
(&Test::A, &Test::AlsoA) | (&Test::AlsoA, &Test::A) => true,
// But without this part -------------------
(&Test::A, &Test::A) => true,
(&Test::B, &Test::B) => true,
(&Test::C, &Test::C) => true,
(&Test::AlsoA, &Test::AlsoA) => true,
// -----------------------------------------
_ => false,
}
}
}
Run Code Online (Sandbox Code Playgroud) rust ×3