文档指出:
Run Code Online (Sandbox Code Playgroud)assert_eq!(usize::max_value(), 18446744073709551615);
但是当我运行一个简单的测试时:
use std::usize;
fn main() {
println!("{}", usize::max_value());
}
Run Code Online (Sandbox Code Playgroud)
它打印:4294967295
我的项目仅被初始化并添加了 2 行use std::usize;,println!("{}", usize::max_value());没有任何其他更改。
我的输出rustc --version --verbose:
assert_eq!(usize::max_value(), 18446744073709551615);
Run Code Online (Sandbox Code Playgroud)
删除 Rust 并使用 64 位 Windows rustup 安装程序重新安装后,我得到:
use std::usize;
fn main() {
println!("{}", usize::max_value());
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行时rustup toolchain list它会打印一个项目:
rustc 1.41.1 (f3e1a954d 2020-02-24)
binary: rustc
commit-hash: f3e1a954d2ead4e2fc197c7da7d71e6c61bad196
commit-date: 2020-02-24
host: i686-pc-windows-msvc
release: 1.41.1
LLVM version: 9.0
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
正如文档所说usize:
该原语的大小是引用内存中任何位置所需的字节数。例如,在 32 位目标上,这是 4 个字节,在 64 位目标上,这是 8 个字节。
4294967295是 32 位整数的最大大小;这表明您正在针对 32 位平台进行编译。
您的输出证实了这一点rustc:
host: i686-pc-windows-msvc
您已安装 32 位 Windows 编译器。64 位编译器说x86_64-pc-windows-*.
您可以将默认的 rustup 主机更改为 64 位:
rustup set default-host x86_64-pc-windows-msvc
Run Code Online (Sandbox Code Playgroud)
然后,您可能需要卸载并重新安装稳定工具链以将其切换到 64 位。
也可以看看: