如何在Rust 1.42.0旧版本中获取usize类型的位数?
在Rust 1.42.0中获取usize类型的位数
由于Rust 1.42.0(2020年发布)尚未引入usize::BITS(该常量在Rust 1.53.0+才稳定),也不存在std::usize::BITS或usize::bits_value()这类API,你可以通过以下两种可靠方式获取usize的位数:
方法1:通过内存大小计算(编译期确定)
利用std::mem::size_of获取usize的字节大小,再乘以8得到总位数,这是编译期就能确定的常量值:
use std::mem; const USIZE_BITS: usize = mem::size_of::<usize>() * 8; fn main() { println!("usize的位数:{}", USIZE_BITS); }
方法2:通过最大值的二进制位数计算
借助std::usize::MAX(Rust 1.42.0中可用)的count_ones方法,直接统计最大值的二进制中1的个数,也就是usize的位数:
fn main() { let usize_bits = std::usize::MAX.count_ones() as usize; println!("usize的位数:{}", usize_bits); }
新旧Rust版本相关API对比
| 特性 | 新版Rust(1.43.0+ / 1.53.0+) | Rust 1.42.0 |
|---|---|---|
| 最大值 | usize::MAX | std::usize::MAX 或 usize::max_value() |
| 最小值 | usize::MIN | std::usize::MIN 或 usize::min_value() |
| 位数 | usize::BITS | 无直接API,需用上述替代方法 |
内容的提问来源于stack exchange,提问作者ynn
相关产品推荐
相关产品推荐

