一、变量声明
编程语言基本上都离不开变量的使用,Rust也不例外。Rust的变量遵循先声明后使用的原则,类型没有“默认构造函数”,变量没有“默认值”,变量如果没有显式赋值,它就没有被初始化,编译器禁止使用未经初始化的变量,因为这会产生未定义行为。
和许多现有的编程语言一样,Rust变量必须由数字、字母、下划线组成,且不能以数字开头。Rust里面的下划线是一个特殊的标识符,在编译器内部它是被特殊处理的。它跟其他标识符有许多重要区别,下划线表达的含义是“忽略这个变量绑定,后面不会再用到了”。
对于局部变量,最常见的声明语为:let var : i32 = 1;
Rust的变量声明语法有以下特点:
- 局部变量声明一定是以关键字let开头,类型一定是跟在冒号:的后面。这样设计语法歧义更少,语法分析器更容易编写。
- 声明的变量前置,对它的类型描述后置。因为在变量声明语句中,最重要的是变量本身,而类型其实是个附属的额外描述,并非必不可少的部分。如果我们可以通过上下文环境由编译器自动分析出这个变量的类型,那么这个类型描述完全可以省略不写。这也是出于类型自动推导功能的考虑。
- let语句不光是局部变量声明语句,而且具有模式解构的功能。
以下是简单的代码样例:
fn main() {
let a: i32 = 1;
println!("{}", a);
// 变量b未显示声明初始化,使用报错
// println!("{}", b);
let _ = "hello";
// _ 是特殊的变量,表示“忽略这个变量绑定,后面不会再用到了”
// println!("{}", _);
}
二、变量绑定
在Rust中,一般把声明的局部变量并初始化的语句称为“变量绑定”
Rust中声明变量缺省是“只读”的,不可变的。如果我们需要让变量是可写的,那么需要使用mut关键字进行修饰。
以下是简单代码样例: