小编gra*_*eme的帖子

元变量周围带有引号的宏

我要打印!宏标识符(主要用于测试宏),但如果我这样做:

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

6
推荐指数
1
解决办法
2537
查看次数

具有相同值的多个枚举变体?

使多个枚举变体具有相同值的最佳方法是什么?这是我想要的一个例子,除了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)

rust

4
推荐指数
1
解决办法
744
查看次数

为Enum设置PartialEq以使多个变量相等

我想定义一个枚举,其中两个不同的值相等,但是我想这样做而不必显式写出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

1
推荐指数
1
解决办法
443
查看次数

标签 统计

rust ×3