我有一些代码可以做到这一点:
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;