我有一些代码可以这样做:
const MY_CRAZY_CONSTANT: u32 = 1 << (u32::BITS - 1); 我试着使用“锈蚀夜”(2016-03-29)编译它,但是它失败了:
error: no associated item named `BITS` found for type `u32` in the current scope我看到它被否决了,并且我看到有一个RFC (尺寸,对齐,偏移,591型)在谈论添加一个大号关键字等等,但这是关闭的:延迟。
我想,这种反对已经在夜间频道取得了成果,因为它已经被删除,而且我知道我可以做以下工作,但要做到这一点,我需要删除我的const,而我宁愿不这样做。
mem::size_of::<u32>() * 8那么,现在的情况是我必须删除我的const并重新构造我的代码,还是有其他方法来实现我原来的目标呢?
发布于 2016-03-29 13:30:08
一般的答案是定义你自己的常数:
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;https://stackoverflow.com/questions/36285396
复制相似问题