02-字面量
字面量 — Rust By Example
译文 · 基于 Rust By Example
原文链接: https://doc.rust-lang.org/stable/rust-by-example/types/literals.html
字面量
对数值字面量,只要把类型作为后缀加上去,就完成了类型说明。比如指定字面量 42 的类型是 i32,只需要写 42i32。
无后缀的数值字面量,其类型取决于怎样使用它们。如果没有限制,编译器会对整数使用 i32,对浮点数使用 f64。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| fn main() {
// 带后缀的字面量,其类型在初始化时已经知道了。
let x = 1u8;
let y = 2u32;
let z = 3f32;
// 无后缀的字面量,其类型取决于如何使用它们。
let i = 1;
let f = 1.0;
// `size_of_val` 返回一个变量所占的字节数
println!("size of `x` in bytes: {}", std::mem::size_of_val(&x)); // size of `x` in bytes: 1
println!("size of `y` in bytes: {}", std::mem::size_of_val(&y)); // size of `y` in bytes: 4
println!("size of `z` in bytes: {}", std::mem::size_of_val(&z)); // size of `z` in bytes: 4
println!("size of `i` in bytes: {}", std::mem::size_of_val(&i)); // size of `i` in bytes: 4
println!("size of `f` in bytes: {}", std::mem::size_of_val(&f)); // size of `f` in bytes: 8
}
|
上面的代码使用了一些还没有讨论过的概念。心急的读者可以看看下面的简短解释:
fun(&foo) 用传引用(pass by reference)的方式把变量传给函数,而非传值(pass by value,写法是 fun(foo))。更多细节请看借用。std::mem::size_of_val 是一个函数,这里使用其完整路径(full path)调用。代码可以分成一些叫做模块(module)的逻辑单元。在本例中,size_of_val 函数是在 mem 模块中定义的,而 mem 模块又是在 std crate 中定义的。更多细节请看模块和crate.