返回

借鉴 Rust 中 array、vector 和 slice 的构建逻辑,把数组、列表和切片玩转!

见解分享

Rust 中的 array、vector 和 slice:理解集合类型

在 Rust 中,数据存储是通过一系列集合类型实现的,其中 array、vector 和 slice 是最常用的。尽管它们在其他编程语言中可能听起来很熟悉,但在 Rust 中,它们具有独特的特征和用法。

array:固定大小的数组

array 是 Rust 中一种固定大小的数组。这意味着它在创建时必须指定其长度,并且之后无法更改。array 可以存储任何类型的数据,并且可以通过索引直接访问其元素。例如:

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

println!("The first number is {}", numbers[0]);

vector:动态大小的数组

vector 是 Rust 中一种动态大小的数组。这意味着它可以在运行时增减长度。vector 可以存储任何类型的数据,并且也可以通过索引直接访问其元素。例如:

let mut numbers = Vec::new();

numbers.push(1);
numbers.push(2);
numbers.push(3);

println!("The first number is {}", numbers[0]);

slice:数组视图

slice 是 Rust 中数组或 vector 的视图。它允许你访问原始数组或 vector 的一部分。slice 可以通过索引直接访问其元素,并且可以通过 slice::from_ref() 函数从数组或 vector 创建。例如:

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

let slice = &numbers[1..3];

println!("The first number in the slice is {}", slice[0]);

比较:array、vector 和 slice

尽管 array、vector 和 slice 都用于存储数据,但它们在以下方面有所不同:

  • 大小: array 的大小是固定的,而 vector 的大小是动态的。slice 的大小也可以是动态的,具体取决于原始数组或 vector 的大小。
  • 创建方式: array 使用方括号 [] 创建,vector 使用 Vec::new() 函数创建,slice 使用 slice::from_ref() 函数从数组或 vector 创建。
  • 访问方式: array、vector 和 slice 都可以通过索引直接访问其元素。

何时使用 array、vector 和 slice

选择使用 array、vector 或 slice 取决于特定场景的需要:

  • array: 当需要固定大小的数组时,如存储常量值。
  • vector: 当需要动态大小的数组时,如存储从用户输入中收集的数据。
  • slice: 当需要访问数组或 vector 的一部分时,如获取数组或 vector 的前三个元素。

结论

array、vector 和 slice 是 Rust 中强大的集合类型,各有其特点和用法。通过理解它们的差异,你可以有效地使用它们来构建 Rust 程序。

常见问题解答

  • 什么是 Rust 中的集合类型?
    • array、vector 和 slice 都是 Rust 中用于存储数据的集合类型。
  • array 和 vector 有什么区别?
    • array 的大小是固定的,而 vector 的大小是动态的。
  • slice 是如何工作的?
    • slice 是数组或 vector 的视图,它允许你访问原始数组或 vector 的一部分。
  • 什么时候使用 array、vector 或 slice?
    • 根据需要固定或动态大小的数组,或访问数组或 vector 的一部分。
  • 这三种类型有什么共同点?
    • 它们都可以存储任何类型的数据,并且可以通过索引直接访问其元素。