什么是const中的u32 :: BITS的替代品?

时间:2016-03-29 13:15:05

标签: rust

我有一些代码可以做到这一点:

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并重新构造我的代码,还是有其他方法来实现我原来的呢?

1 个答案:

答案 0 :(得分:2)

一般的答案是定义自己的常量:

const U32_BITS: usize = 32;

对于usize::BITSisize::BITS的特殊情况,您需要使用条件编译。

#[cfg(target_pointer_width = "32")]
const USIZE_BITS: usize = 32;
#[cfg(target_pointer_width = "64")]
const USIZE_BITS: usize = 64;