字面量

可以通过添加类型作为后缀来对数字字面量进行类型注释。例如,要指定字面量 42 应具有 i32 类型,请编写 42i32

没有后缀的数字字面量的类型将取决于它们的用法。如果没有约束,编译器将对整数使用 i32,对浮点数使用 f64

fn main() {
    // Suffixed literals, their types are known at initialization
    let x = 1u8;
    let y = 2u32;
    let z = 3f32;

    // Unsuffixed literals, their types depend on how they are used
    let i = 1;
    let f = 1.0;

    // `size_of_val` returns the size of a variable in bytes
    println!("size of `x` in bytes: {}", std::mem::size_of_val(&x));
    println!("size of `y` in bytes: {}", std::mem::size_of_val(&y));
    println!("size of `z` in bytes: {}", std::mem::size_of_val(&z));
    println!("size of `i` in bytes: {}", std::mem::size_of_val(&i));
    println!("size of `f` in bytes: {}", std::mem::size_of_val(&f));
}

前面的代码中使用了一些尚未解释的概念,这里是对不耐烦的读者进行的简要说明

  • std::mem::size_of_val 是一个函数,但使用其*完整路径*调用。代码可以拆分为称为*模块*的逻辑单元。在这种情况下,size_of_val 函数在 mem 模块中定义,而 mem 模块在 std *crate* 中定义。有关更多详细信息,请参阅模块crate