2016-03-29 11 views
4

私はこれを行うコードのビットを有する:constでu32 :: BITSの代替手段は何ですか?

const MY_CRAZY_CONSTANT: u32 = 1 << (u32::BITS - 1); 

Iが夜間(2016年3月29日)を錆を使用してコンパイルしようとし、それはメッセージで失敗:

error: no associated item named `BITS` found for type `u32` in the current scope 

なるほどそれは廃止され、sizeofキーワードの追加などについてのRFC(Sizeof, alignof, offsetof, typeof #591)がありましたが、閉鎖されています:延期されました。

夜間のチャンネルでは廃止されましたが、削除され、次のことができることはわかっていますが、そうするためには、むしろ私のconstを削除する必要があります。

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

だから、それは今私が私のconstと再構造私のコードを削除する必要がありますか私はもともと持っていたものを達成するために他のいくつかの方法がある場合でしょうか?

答えて

2

一般的な答えは、独自の定数を定義することです:usize::BITSまたはisize::BITSの特殊なケースのための

const U32_BITS: usize = 32; 

を、あなたは条件付きコンパイルを使用する必要があります。

#[cfg(target_pointer_width = "32")] 
const USIZE_BITS: usize = 32; 
#[cfg(target_pointer_width = "64")] 
const USIZE_BITS: usize = 64; 
関連する問題