如何匹配Rust中的标志/位掩码?

时间:2016-08-27 07:33:08

标签: rust bitflags

对位标记进行典型检查:

if      (v & (1 << 0)) != 0 { foo(); }
else if (v & (1 << 1)) != 0 { bar(); }
else if (v & (1 << 2)) != 0 { baz(); }

如何将其写为match语句?

1 个答案:

答案 0 :(得分:9)

if      (v & (1 << 0)) != 0 { foo(); }
else if (v & (1 << 1)) != 0 { bar(); }
else if (v & (1 << 2)) != 0 { baz(); }

这样的具体代码可以这样重写:

match v.trailing_zeros() {
    0 => foo(),
    1 => bar(),
    2 => baz(),
    _ => {},
}