我有一些代码可以做到这一点:
const MY_CRAZY_CONSTANT: u32 = 1 << (u32::BITS - 1);
我尝试使用Rust nightly(2016-03-29)编译它,但它失败并显示消息:
error: no associated item named `BITS` found for type `u32` in the current scope
我看到它已被弃用,我看到有一个RFC(Sizeof, alignof, offsetof, typeof #591)谈论添加sizeof关键字等,但这已经关闭:推迟了。
我想在夜间频道中已经取消了它已被删除,因为它已被删除,我知道我可以执行以下操作,但为了这样做,我需要删除我的const,我宁愿不这样做。< / p>
mem::size_of::<u32>() * 8
那么,现在是否必须删除我的const并重新构造我的代码,还是有其他方法来实现我原来的呢?
答案 0 :(得分:2)
一般的答案是定义自己的常量:
const U32_BITS: usize = 32;
对于usize::BITS
或isize::BITS
的特殊情况,您需要使用条件编译。
#[cfg(target_pointer_width = "32")]
const USIZE_BITS: usize = 32;
#[cfg(target_pointer_width = "64")]
const USIZE_BITS: usize = 64;