变量绑定基础概念
fn main() {
let x = 5;
let (m, n) = (1, 2); // 等号左侧是一个 “模式”
println!("m => {} ; n => {}; ", m, n);
// 类型注解,无注解编译器 类型推断
let y: i32 = 5; // i开头有符号
let k: u32 = 10; // u开头无符号
// 可变性 (Mutability)
// 绑定默认是不可变的(immutable)
let v1 = 5;
// v1 = 10; // 编译出错 提示:re-assignment of immutable variable
let mut v2 = 5;
v2 = 10; // mut 绑定可以赋值
println!("v2 value : {}", v2);
// 初始化绑定
let v3: i32; // 未赋值不允许使用
// println!("v3 value : {}", v3); 编译提示:re-assignment of immutable variable
// 作用域和隐藏
let v4: i32 = 17;
{
let v5: i32 = 3;
println!("v4, v5 value: {}, {}", v4, v5);
}
// cannot find value `v5` in this scope
// println!("v4, v5 value: {}, {}", v4, v5);
let v6: i32 = 8;
{
println!("v6 value: {}", v6); // 8
let v6: i32 = 12;
println!("v6 value: {}", v6); // 12 被 let v6: i32 = 12; 隐藏了
}
println!("v6 value: {}", v6); // 8 恢复
}