我有一个项目需要从磁盘读取一些字节。如果系统是64位系统,则会读取双字以获得正确的字节数。如果是32位系统,它将读取一个单词。
我希望有一种可以代表这些选项的类型。称之为SystemWord
。
我不确定处理此问题的最佳方法是什么,这样才能让我有类似的东西
let test: SystemWord = 0x01;
它会立即知道是否选择u64或u32。
任何人都可以就最佳方式提供任何指导吗?我对Rust还是比较新的。
答案 0 :(得分:3)
您的意思是usize
,explained in the Rust Book?
这是实际想要的解决方案。您要求的解决方案是conditional compilation,如下所示:
#[cfg(target_pointer_width="32")]
type SystemWord = u32;
#[cfg(target_pointer_width="64")]
type SystemWord = u64;
但是当你可以使用usize
时不要这样做。实际上,除非绝对必须这样做,否则不要这样做,因为这通常会导致您的代码中有两个或更多代码路径:一个经过充分测试,另一个经常没有完全测试 。