数字文本可以通过添加类型作为后缀注释类型, 目前除了 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 包装箱中.