如何在旧版本的Rust中获得大小的位数?

q0qdq0h2  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(180)

2022年,我有时不得不在远程环境中使用Rust 1. 42. 0(2020年发布)。
如何获得旧版本Rust中usize的位数?
我曾经遇到过一个类似的问题,我想访问usize,但发现usize::MAX在Rust 1.42.0中不存在。当时,我发现std::usize::MAX在1.42.0中已经存在。然而,不一致的是,std::usize::BITS并不存在。
| | 新 rust | rust eclipse 1.42.0|
| - -|- -|- -|
| 最大值|usize::MAX(Rust 1.43.0或更新版本)|std::usize::MAXusize::max_value()|
| 最小值|usize::MIN(Rust 1.43.0或更新版本)|std::usize::MINusize::min_value()|
| 位数|usize::BITS(Rust 1.53.0或更新版本)|***std::usize::BITSusize::bits_value()不存在***。|

odopli94

odopli941#

据我所知,没有像usize::BITSusize::bits_value()这样的内置简单方法。
您必须使用相对较低级别的操作来直接计算位数:

let bits = std::mem::size_of::<usize>() * 8;

(但是,请注意,usize::BITS的类型为u32,而size_of()返回usize。)
根据相关的pull请求(Add associated constant BITS to all integer types #76492),似乎这种不便是Rust 1.53.0中首先添加usize::BITS的原因。

相关问题