You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Rust中统计布尔值为true的数量有没有简便方法?

布尔值true数量统计的优化方案

你给出的示例为Rust语法,先针对Rust场景给出最优实现,再补充跨语言通用思路。

Rust 场景实现

写法1:直接相加(3个及以下布尔值最优)

利用Rust中bool类型强制转换为整数时true对应1、false对应0的特性,直接求和即可,完全无分支,编译后指令效率最高:

let count = a as u8 + b as u8 + c as u8;

写法2:迭代器统计(扩展性最优)

如果布尔值数量较多,或者后续可能新增变量,可以用数组加迭代器的写法,新增布尔值仅需要修改数组元素即可,不需要调整逻辑:

let count = [a, b, c].into_iter().filter(|&val| val).count() as u8;

该写法在release编译下会被自动优化为和直接相加几乎一致的机器码,性能损失可以忽略。

跨语言通用思路

几乎所有主流语言的布尔值都有对应0/1的底层映射,不需要分支判断即可统计,比你原本的if累加写法避免了分支预测失败的开销,性能普遍高10%~30%,循环调用时差异更明显:

  • C/C++:int count = a + b + c;(C/C++中bool本质是0/1整数类型)
  • Python:count = sum([a, b, c])(Python中True等价1,False等价0)
  • Java:int count = (a? 1 : 0) + (b? 1 : 0) + (c? 1 : 0);

内容的提问来源于stack exchange,提问作者Elie Hess。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:54:04