数字文本可以通过添加类型作为后缀注释类型, 目前除了 usize
使用 usize
后缀,以及 isize
使用 isize
作为后缀。
后缀的数字文字类型将取决于如何使用它们。如果没有约束存在,编译器将使用 i32
为整数, f64
作为浮点数。
fn main() { // Suffixed literals, their types are known at initialization let x = 1u8; let y = 2u32; let z = 3f32; // Unsuffixed literal, 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)); }
有在前面的代码中使用一些概念,但没有解释,这里有一个简单的解释:
fun(&foo)
是用来引用参数传递给函数, 而不是通过 (fun(foo)
) 值.
std::mem::size_of_val
是一个函数,调用它的完整路径。代码可以分成称为模块的逻辑单元。在这种情况下,该 size_of_val
函数是在所定义的 mem
模块, 并且 mem
模块是定义在 std
包装箱中.