基于系统切换数据类型?
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
时不要这样做。事实上,除非你 绝对 必须这样做,否则不要这样做,因为这通常会导致你的代码中有两个或更多代码路径:一个经过良好测试的,另一个通常 根本.
没有经过测试
我有一个项目需要从磁盘读取一些字节。如果系统是 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
时不要这样做。事实上,除非你 绝对 必须这样做,否则不要这样做,因为这通常会导致你的代码中有两个或更多代码路径:一个经过良好测试的,另一个通常 根本.