【发布时间】:2015-03-25 06:37:04
【问题描述】:
我有一个包含一些嵌套值的枚举。我想检查这个枚举是否具有给定的变体,但没有指定里面的内容。检查以下程序:
enum Test {
Zero,
One(u8),
Two(u16),
Four(u32),
}
fn check(x: Test, y: Test) -> bool {
x == y;
}
fn main() {
let x = Test::Two(10);
let b1 = check(x, Test::One);
let b2 = check(x, Test::Two);
let b3 = match x {
Test::Four(_) => true,
_ => false,
}
}
b3 检查x 是否为Test::Four,其中包含任意值。我希望在函数check 中完成检查。当前代码无法编译,我不知道如何仅提取枚举变量而没有相应的内部值。
我想这可以通过宏转换为match 表达式来完成,但是没有宏可以做到吗?
我可以看到Test::One 是fn(u16) -> Test {Two}。我可以使用这个事实吗?测试 x 是使用该函数创建的。
【问题讨论】: