rust – 在const中u32 :: BITS的替代方法是什么?

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

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,我宁愿不去做.

mem::size_of::<u32>() * 8

那么,现在我必须删除我的const并重新构造我的代码,还是有其他方法来实现我原来的东西?

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

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;
点赞