Rust入门系列第二篇。Rust在变量声明和使用方式上格外讲究——这里的规则正是其安全性的根基。
变量默认不可变#
let name = "Ada";
name = "Grace"; // 错误:不能对不可变变量赋值两次rust这是有意为之:不可变数据易于推理,共享也安全。用 mut 让变量可变:
let mut score = 10;
score += 5;rust只在真正需要时使用 mut。
类型推断#
Rust 能推断类型,也可以显式标注:
let count: u32 = 42;
let ratio: f64 = 3.14;
let name: &str = "Rust";
let done: bool = true;rust标量类型#
| 类型 | 取值 |
|---|---|
| 整数 | i8..i128、u8..u128(有/无符号) |
| 浮点数 | f32、f64 |
| 布尔 | bool |
| 字符 | char(Unicode,4 字节) |
默认整数类型是 i32,默认浮点类型是 f64:
let x = 5; // i32
let y = 2.5; // f64rust复合类型#
元组(tuple)把任意类型的值组合在一起:
let point = (3, 5);
let (x, y) = point; // 解构
println!("{}", point.0); // 3rust数组(array)以固定长度保存多个同类型值:
let primes = [2, 3, 5, 7, 11];
println!("{}", primes[0]); // 2rust常量#
const 值永远不可变,且必须有已知类型:
const MAX_SPEED: u32 = 120;rust与 let 不同,const 可以在任何作用域声明,并在编译期内联。
遮蔽(Shadowing)#
可以复用变量名来转换其值,新值生效前旧值仍然有效:
let x = 5;
let x = x + 1;rust遮蔽还能改变类型:
let label = "12"; // &str
let label = label.len(); // usizerust结论#
Rust 的变量规则——默认不可变、显式 mut、遮蔽——让数据流变得可预测。本系列下一篇:控制流。