变量绑定(Rust入门)
本文章参考自官方学习文档及社区学习文档以下是参考链接:
官方:
社区:
直接上手学习推荐:
概述点
Rust 通过静态类型确保类型安全。变量绑定可以在声明时说明类型,不过在多数情况下, 编译器能够从上下文推导出变量的类型,从而大大减少了类型说明的工作。
变量绑定
使用 let 绑定操作可以将值(比如字面量)绑定(bind)到变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| fn main() { let an_integer = 1u32; let a_boolean = true; let unit = ();
let copied_integer = an_integer;
println!("An integer: {:?}", copied_integer); println!("A boolean: {:?}", a_boolean); println!("Meet the unit value: {:?}", unit);
let _unused_variable = 3u32;
let noisy_unused_variable = 2u32; }
|
可变变量
变量绑定默认是不可变的(immutable), 但加上mut
修饰语后变量就可以改变。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| fn main() { let _immutable_binding = 1; let mut mutable_binding = 1;
println!("Before mutation: {}", mutable_binding);
mutable_binding += 1;
println!("After mutation: {}", mutable_binding);
}
|
作用域和掩蔽
变量绑定有一个作用域(scope
), 它被限定只在一个代码块(block
)中生存(live)。代码块是一个被{}
包围的语句集合。另外也允许变量掩蔽(variable shadowing
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| fn main() { let long_lived_binding = 1;
{ let short_lived_binding = 2;
println!("inner short: {}", short_lived_binding);
let long_lived_binding = 5_f32;
println!("inner long: {}", long_lived_binding); }
println!("outer long: {}", long_lived_binding);
let long_lived_binding = 'a';
println!("outer long: {}", long_lived_binding); }
|
变量先声明
可以先声明(declare
)变量绑定,后面才将它们初始化(initialize
)。但是这种做法很少用,因为这样可能导致使用未初始化的变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| fn main() { let a_binding;
{ let x = 2;
a_binding = x * x; }
println!("a binding: {}", a_binding);
let another_binding;
another_binding = 1;
println!("another binding: {}", another_binding); }
|