rust 中变量赋值使用绑定这个概念:
let a = "hello world"变量默认不可改变,除非使用 mut 字段修饰:
let mut a = 123;rust编译器默认会警告未被使用的变量,可以在变量前加下划线忽略警告:
fn main() {
let _x = 1; // 这里忽略了x未使用的警告
let y = 3;
println!("the value of y is {}", y)
}或者使用属性宏:
#[allow(unused_variables)]
fn main() {
let x = 1; // 这里忽略了x未使用的警告
let y = 3;
println!("the value of y is {}", y)
}let 表达式也可以用于复杂变量的解构:
fn main() {
let (a, mut b): (bool,bool) = (true, false);
// a = true,不可变; b = false,可变
println!("a = {:?}, b = {:?}", a, b);
b = true;
assert_eq!(a, b);
}rust中变量和常量的区别是:常量自程序运行始终都不会改变,编译完成后都不会发生改变;常量使用 const 修饰
const MAX_POINTS: u32 = 100_000; // 默认常量的命名都是大写rust中可以使用同名变量,后定义的变量会覆盖之前定义的变量:
fn main() {
let x = 5;
// 在main函数的作用域内对之前的x进行遮蔽
let x = x + 1;
{
// 在当前的花括号作用域内,对之前的x进行遮蔽
let x = x * 2;
println!("The value of x in the inner scope is: {}", x);
}
println!("The value of x is: {}", x);
}第二个 let 生成了一个新的变量只是和前面的变量重名(这涉及到内存对象的再分配,而 mut 声明的对象修改同一内存上的值, 性能更好)