根据系统切换数据类型?

时间:2016-02-15 03:05:14

标签: types architecture rust 32bit-64bit

我有一个项目需要从磁盘读取一些字节。如果系统是64位系统,则会读取双字以获得正确的字节数。如果是32位系统,它将读取一个单词。

我希望有一种可以代表这些选项的类型。称之为SystemWord

我不确定处理此问题的最佳方法是什么,这样才能让我有类似的东西

let test: SystemWord = 0x01;

它会立即知道是否选择u64或u32。

任何人都可以就最佳方式提供任何指导吗?我对Rust还是比较新的。

1 个答案:

答案 0 :(得分:3)

您的意思是usizeexplained in the Rust Book

这是实际想要的解决方案。您要求的解决方案是conditional compilation,如下所示:

#[cfg(target_pointer_width="32")]
type SystemWord = u32;

#[cfg(target_pointer_width="64")]
type SystemWord = u64;

但是当你可以使用usize时不要这样做。实际上,除非绝对必须这样做,否则不要这样做,因为这通常会导致您的代码中有两个或更多代码路径:一个经过充分测试,另一个经常没有完全测试