跳到主要内容

Rust 变量与可变性

提示
  1. 变量声明与基本概念:在 Rust 中,使用 let 关键字声明变量,变量可存储不同数据类型的值,如整数、浮点数和字符串。
  2. 变量的不可变性与可变性:默认情况下,Rust 的变量是不可变的,不能更改其值。使用 mut 关键字声明的变量是可变的,允许修改其值。
  3. 变量命名规则和常量:变量名必须以字母或下划线开头,只能包含字母、数字和下划线。Rust 中的常量使用 const 关键字声明,一旦设定,其值不能被更改。

在计算机编程中,我们使用变量来存储数据。例如,

let x = 1;

这里,x 是存储值 1 的变量名称。

我们可以将变量看作是保存信息的容器。

Rust 变量声明

我们使用 let 关键字在 Rust 中声明变量。

let age = 31;

这里,我们创建了一个名为 age 的变量,其值为 31

示例:Rust 变量

fn main() {
// 用于存储整数值的变量
let age = 31;
println!("年龄: {}", age);

// 用于存储浮点数的变量
let salary = 342523.23;
println!("薪水: {}", salary);

// 用于存储字符串的变量
let name = "Jackie";
println!("姓名: {}", name);
}

输出

年龄: 31
薪水: 342523.23
姓名: Jackie

在上述示例中,我们创建了三个不同的变量:

  • age - 用于存储整数值
  • salary - 用于存储浮点数
  • name - 用于存储字符串

注意我们使用了 println! 宏来打印变量。

println!("年龄: {}", age);

要了解更多关于 println! 的信息,请访问 Rust 打印输出

更改变量的值

默认情况下,Rust 中的变量是不可变的,这意味着一旦定义了变量的值,我们就无法更改它。让我们看一个示例,

fn main() {
// 声明一个值为 1 的变量
let x = 1;
println!("x = {}", x);

// 更改变量 x 的值
x = 2;
println!("x = {}", x);
}

当我们运行这段代码时,我们会得到一个错误。这是因为我们试图将 x 变量的值从 1 更改为 2

error[E0384]: 无法对不可变变量 `x` 进行二次赋值
--> main.rs:7:5
|
3 | let x = 1;
| -
| |
| 第一次对 `x` 的赋值
| 建议:考虑将此绑定设置为可变的:`mut x`
...
7 | x = 2;
| ^^^^^ 无法对不可变变量进行二次赋值

为了解决这个问题,Rust 允许我们创建可变变量。

Rust 中的可变性

我们在变量名称前使用 mut 关键字来创建一个可变变量。例如,

let mut x = 1;

这里,x 是一个可变变量。现在我们可以更改 x 的值。

示例:可变变量

fn main() {
// 声明一个值为 1 的可变变量
let mut x = 1;
println!("x 的值 = {}", x);

// 改变变量 x 的值
x = 2;
println!("x 更新后的值 = {}", x);
}

输出

x 的值 = 1
x 更新后的值 = 2

在这里,您可以看到我们已经成功地改变了 x 变量的值。这是因为我们使用了 mut 关键字定义了 x 变量。

Rust 中变量命名的规则

我们可以使用任何名称作为变量名,但是有一些规则我们应该遵循:

  1. Rust 是一种区分大小写的语言。因此,小写变量和大写变量是不同的。例如,

ageAGE 不同

nameName 不同

  1. 变量必须以字母或下划线开头。例如,
let age = 31;     	// 有效且符合良好实践
let _age = 31; // 有效的变量
let 1age = 31; // 无效的变量
  1. 变量名只能包含字母、数字和下划线字符。例如,
let age1 = 31;        // 有效的变量
let age_num = 31; // 有效的变量
let s@lary = 52352; // 无效的变量
  1. 如果需要使用两个单词作为变量名,请使用下划线。例如,
let first name = "Jack";    // 无效的变量
let first_name = "Jack"; // 有效的变量
let first-name = "Jack"; // 无效的变量

注意: 始终尽量给变量起有意义的名称。例如,nameagenumbernagnm 更好。

Rust 常量

常量是一种特殊类型的变量,其值不能被更改。我们使用 const 关键字在 Rust 中创建常量。例如,

fn main() {
// 声明一个浮点型常量
const PI: f32 = 3.14;

println!("PI 的值 = {}", PI);
}

输出:

PI 的值 = 3.14

在上面的示例中,我们声明了一个值为 3.14 的常量 PI。现在,程序中的 PI 值不能被更改。

让我们看看如果我们尝试更改常量的值会发生什么。

fn main() {
// 声明一个常量
const PI: f32 = 3.14;
println!("PI 的初始值: {}", PI);

// 更改 PI 的值
PI = 535.23;
println!("PI 的更新值: {}", PI);
}

当我们运行这段代码时,我们会得到一个错误,因为 PI 是一个常量。

error[E0070]: invalid left-hand side of assignment
--> main.rs:7:8
|
7 | PI = 535.23;
| -- ^
| |
| cannot assign to this expression

注意: 根据 Rust 的命名约定,我们使用大写字母命名常量。