Rust中的后缀注释是什么?

Rob*_*gar 3 rust

我读了这个文档并偶然发现了这一行。

let an_integer = 5i32; // Suffix annotation

这是什么意思?我假设它的值是 5,整数类型是 i32。那是对的吗?

bk2*_*204 8

对,那是正确的。当您在程序中编写文字时5,它可以被解释为多种类型。(文字是一个值,例如5,它直接写入源代码而不是被计算。)如果我们想表达文字是某种类型,我们可以将类型附加(“后缀”)到它使其明确,如5i32.

这仅适用于某些内置类型,例如整数和浮点数,但在某些情况下它可以派上用场。例如,以下内容无效:

fn main() {
    println!("{}", 1 << 32);
}
Run Code Online (Sandbox Code Playgroud)

这是因为如果您根本没有为整数指定任何类型,则它默认为i32. 由于将 32 位整数移位 32 位是无效的,因此 Rust 会产生错误。

但是,我们可以这样写并且它会起作用:

fn main() {
    println!("{}", 1u64 << 32);
}
Run Code Online (Sandbox Code Playgroud)

那是因为现在整数是 au64并且它在范围内。