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

标签 rust bitflags

对位标志进行典型检查:

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

如何将其写成 match 语句?

最佳答案

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(),
    _ => {},
}

关于rust - 如何匹配 Rust 中的标志/位掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39178648/

相关文章:

rust - 如何覆盖 Cargo 配置目录的位置?

linux - 带有依赖加密的错误Selenium Wire Linux

c - 在位域集合中检测到至少一位被设置

c# - [Flags] 属性的真正作用是什么?

c# - 从 C# 中的值解码位掩码

rust - 我可以阻止 cargo 在每个新项目中重建库吗?

rust - "parameter ` 'a` 从不使用 "error when ' a 在类型参数绑定(bind)中使用

c - 有效地检查 Bitflag 不变性(可能的位旋转)

c# - 用标志方法扩展枚举?

tcp - 在Tokio中使用TcpStream读取碎片化的TCP数据包