Rust 什么';常量中u32::位的替代方案是什么?

Rust 什么';常量中u32::位的替代方案是什么?,rust,Rust,我有一些代码可以做到这一点: const MY_CRAZY_CONSTANT: u32 = 1 << (u32::BITS - 1); 我看到它被弃用了,我看到有一个RFC()在谈论添加一个sizeof关键字等,但这已经结束了:推迟 我猜,在夜间频道中,这种反对已经产生了效果,因为它已经被删除,我知道我可以做以下事情,但要做到这一点,我需要删除我的const,我宁愿不这样做 mem::size_of::<u32>() * 8 mem::的大小::()*8 那么,现

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

const MY_CRAZY_CONSTANT: u32 = 1 << (u32::BITS - 1); 
我看到它被弃用了,我看到有一个RFC()在谈论添加一个sizeof关键字等,但这已经结束了:推迟

我猜,在夜间频道中,这种反对已经产生了效果,因为它已经被删除,我知道我可以做以下事情,但要做到这一点,我需要删除我的const,我宁愿不这样做

mem::size_of::<u32>() * 8
mem::的大小::()*8

那么,现在是不是我必须删除常量并重新构造代码,还是有其他方法来实现我原来的目标?

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

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;
#[cfg(target_pointer_width = "32")]
const USIZE_BITS: usize = 32;
#[cfg(target_pointer_width = "64")]
const USIZE_BITS: usize = 64;