基于系统切换数据类型?

Switching data types based on system?

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

我想要一个可以代表这些选项的类型。称之为 SystemWord.

我不确定处理此问题的最佳方式,使我能够拥有类似

的东西
let test: SystemWord = 0x01;

它会立即知道是选择u64还是选择u32

任何人都可以提供有关执行此操作的最佳方法的任何指导吗?我对 Rust 还是很陌生。

您的意思是 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 时不要这样做。事实上,除非你 绝对 必须这样做,否则不要这样做,因为这通常会导致你的代码中有两个或更多代码路径:一个经过良好测试的,另一个通常 根本.

没有经过测试