Rust 变量

变量是在编程语言中通过名字可以访问的一块内存空间,里面存储的数据可以在程序运行时修改。这个变量的名字称为变量名。

变量的数据类型不仅用于标识内存中存储的数据类型,还用于标识内存中存储的数据的大小。

1. Rust 语言变量的命名规则

  • Rust 中的变量名中可以包含 字母、数字 和 下划线。
  • 也就只能是 abcdefghijklmnopqrstuvwxyz013456789_ 以及大写字母。

  • 变量名必须以 字母 或 下划线 开头。
  • 也就是不能以 数字 开头。

  • 变量名是 区分大小 写的。
  • 也就是大写的 A 和小写的 a 是两个不同的字符。

2. Rust 语言变量的声明语法

Rust 语言中声明变量时的数据类型是可选的,也就是可以忽略的。如果忽略了,那么 Rust 就会自动通过 值 来推断变量的类型。

Rust 语言中声明变量的语法格式如下:

let variable_name = value;            // 不指定变量类型
let variable_name:dataType = value;   // 指定变量类型

Rust 语言变量的声明语法的范例:

fn main() {
   let fees = 25_000;
   let salary:f64 = 35_000.00;
   println!("fees is {} and salary is {}",fees,salary);
}

编译运行以上 Rust 代码,输出结果如下:

fees is 25000 and salary is 35000

3. let 变量的不可变性

默认情况下,Rust 语言中的变量是不可变的。

Rust 语言中使用 let 声明的变量,在第一次赋值之后,是不可变更不可重新赋值的,变成了 只读 状态。

就像我们身份证上的名字,不是轻易能够改变的,不是自己涂涂写写就能改变的。

这点不同于很多语言,倒是跟 Erlang 有点像。如果你觉得有点难以理解,那么参考以下代码:

fn main() {
   let fees = 25_000;
   println!("fees is {} ",fees);
   fees = 35_000;
   println!("fees changed is {}",fees);
}

编译上面这段 Rust 代码会报错:

error[E0384]: re-assignment of immutable variable `fees`
 --> main.rs:6:3
   |
 3 | let fees = 25_000;
   | ---- first assignment to `fees`
...
 6 | fees=35_000;
   | ^^^^^^^^^^^ re-assignment of immutable variable

error: aborting due to previous error(s)

上面这段错误消息告诉我们:我们不能对变量 fees 进行第二次赋值。

这估计是 Rust 语言中最大的变更了,也是并发编程安全性的重要组成部分。同时是 Rust 程序员最容易出错的地方。

4. Rust 可变变量

let 关键字声明的变量默认情况下是 不可变更 的,在定义了一个变量之后,默认情况下我们是不能通过赋值再改变它的值的。

但有时候,我们又需要给一个变量重新赋值,这要怎么做呢?

Rust 语言提供了 mut 关键字表示 可变更。 我们可以在变量名的前面加上 mut 关键字来告诉编译器这个变量是可以重新赋值的。

1)Rust 可更变量的声明的语法

let mut variable_name:dataType = value;

或者让编译器自动推断类型。

let mut variable_name = value;

2)Rust 可更变量的声明的范例

我们使用 mut 关键字定义一个变量 fees 然后再重新赋值。

fn main() {
   let mut fees:i32 = 25_000;
   println!("fees is {} ",fees);
   fees = 35_000;
   println!("fees changed is {}",fees);
}

编译运行以上 Rust 代码,输出结果如下:

fees is 25000
fees changed is 35000

下一章:Rust 常量

常量就是那些值不能被改变的变量。一旦我们定义了一个常量,那么就再也没有任何方法可以改变常量的值了。Rust 语言中使用 const 关键字来定义一个常量。定义常量时需要明确指定常量的数据类型。Rust 常量命名规则:常量命名规则和变量的命名规则是类似的,除了以下几点:常量名通常都是 大写字母。使用 const 关键字而不是 let 关键字来定义一个常量。