Rust 简明教程

Rust 数组

1. 数组

数组用于在单个变量中存储多个值,而不需要为每个值声明单独的变量。

2. 创建一个数组

您可以使用方括号 [ ] 来创建一个数组,并用逗号分隔其中的各个值。

注意: 请确保所有的值都具有相同的数据类型(在下面的示例中为整数):

示例

let numbers = [1, 2, 3, 4, 5];

这创建了一个包含五个整数的数组。

3. 访问数组元素

要访问数组中的某个元素,请引用它的索引号。

数组的索引从 0 开始:[0] 是第一个元素,[1] 是第二个元素,依此类推。

以下语句访问了 numbers 数组中第一个元素 [0] 的值:

示例

let numbers = [1, 2, 3, 4, 5];
println!("The first number is: {}", numbers[0]);

4. 更改数组的值

要更改特定元素的值,请引用该索引号并赋予一个新值。

请记住使数组变为可变状态(使用 mut 关键字):

示例

let mut numbers = [1, 2, 3, 4, 5];
numbers[0] = 10;
println!("The new first number is: {}", numbers[0]);

5. 数组长度

您可以使用 .len() 方法获取数组中元素的数量:

示例

let numbers = [1, 2, 3, 4, 5];
println!("This array has {} elements.", numbers.len());

6. 遍历数组

您可以使用 for 循环来遍历数组中的元素。

示例

let fruits = ["apple", "banana", "orange"];
for fruit in fruits {
  println!("I like {}.", fruit);
}

7. 打印整个数组

注意: 当打印整个数组时,您必须在 println! 中使用 {:?}

示例

let numbers = [1, 2, 3, 4, 5];
println!("{:?}", numbers);

如果您只打印数组中的某一个元素,您可以使用 {}

示例

let numbers = [1, 2, 3, 4, 5];
println!("{}", numbers[0]);

总结:

  • 当从数组中打印单个元素时,使用 {}。
  • 当打印整个数组时,使用 {:?}。

如果你想知道为什么我们在前面的循环示例中没有在循环内部使用 {:?},这是因为在循环中,你是在打印数组中的每一个单独的值。因为每个值都是一个字符串,所以 {} 是有效的。但是要打印整个数组本身,你需要使用 {:?}

一个很好的经验法则是:对于基础类型如字符串、数字和布尔值,使用 {};而对于数据结构如数组和向量——当打印整个结构时,使用 {:?}

8. 固定大小(数组)对比动态大小(向量)

在讨论 Rust 中的数组时,您经常会听到“固定大小”和“动态大小”这两个术语。

这是因为 Rust 中的数组具有固定大小,这意味着在数组创建之后,您无法再添加或删除元素:

示例

// 一个包含 3 个元素的数组
let mut cars = ["Volvo", "BMW", "Ford"];

// 尝试向 cars 数组添加另一个元素(第四个元素)将会导致错误
cars[3] = "Mazda"; // 错误:索引越界

8.1 向量 - 动态大小示例

对于需要添加和移除数组元素的操作,您可以使用向量 (Vectors),它们是大小可变的数组。

向量的大小是动态的,这意味着它可以根据需要增长和缩小。

您可以使用 vec! 宏来创建一个向量:

示例

// 一个包含 3 个元素的向量
let mut cars = vec!["Volvo", "BMW", "Ford"];

// 添加另一个元素
cars.push("Mazda");
println!("{:?}", cars); // ["Volvo", "BMW", "Ford", "Mazda"]