当前位置:首页 > Rust > 正文

Rust集合类型入门指南(掌握Rust语言中最常用的集合:Vec、HashMap等基础用法)

在学习 Rust 编程语言的过程中,掌握Rust集合类型是必不可少的一环。集合(Collections)用于存储多个值,是构建复杂程序的基础。本文将带你从零开始,了解 Rust 中最常用的几种集合类型,包括 Vec(向量)、HashMap 等,并通过简单易懂的示例帮助你快速上手。

Rust集合类型入门指南(掌握Rust语言中最常用的集合:Vec、HashMap等基础用法) Rust集合类型 Rust Vec HashMap Rust语言基础 第1张

什么是集合?

在 Rust 中,集合是一类可以存储多个元素的数据结构。与数组(array)不同,集合的大小可以在运行时动态增长或缩小。Rust 标准库提供了三种主要的集合类型:

  • Vec<T>:可变长度的数组,按索引访问。
  • String:UTF-8 编码的文本字符串(虽然严格来说不是“集合”,但行为类似)。
  • HashMap<K, V>:键值对映射,通过键快速查找值。

1. Vec(向量)——最常用的动态数组

Vec 是 Rust 中最常用的集合类型,用于存储相同类型的多个元素,并支持动态扩容。它是堆分配的,因此大小不受编译时限制。

创建 Vec

你可以通过多种方式创建一个 Vec

// 方法1:使用 Vec::new()let mut v: Vec<i32> = Vec::new();// 方法2:使用宏 vec!let v = vec![1, 2, 3];// 方法3:自动推断类型let mut numbers = Vec::new();numbers.push(1);numbers.push(2);  

访问和修改 Vec

let mut fruits = vec!["apple", "banana"];// 添加元素fruits.push("orange");// 通过索引读取(注意:越界会 panic)println!("第一个水果: {}", fruits[0]);// 安全访问(返回 Option)if let Some(fruit) = fruits.get(1) {    println!("第二个水果: {}", fruit);}  

2. HashMap —— 键值对存储

HashMap 允许你将一个键(key)映射到一个值(value),非常适合需要通过唯一标识符快速查找数据的场景。这是 Rust HashMap 的核心用途。

创建和使用 HashMap

use std::collections::HashMap;let mut scores = HashMap::new();// 插入键值对scores.insert(String::from("Blue"), 10);scores.insert(String::from("Yellow"), 50);// 获取值if let Some(score) = scores.get(&String::from("Blue")) {    println!("Blue 队得分: {}", score);}// 遍历 HashMapfor (team, score) in &scores {    println!("{}: {}", team, score);}  

3. String —— 文本集合

虽然 String 不是传统意义上的“集合”,但它本质上是一个 UTF-8 字节的 Vec<u8>,因此也具备动态增长的能力。

let mut s = String::from("Hello");s.push_str(", world!");println!("{}", s); // 输出: Hello, world!  

选择合适的集合类型

在实际开发中,如何选择集合类型?这里有一个简单指南:

  • 需要按顺序存储多个相同类型的数据? → 用 Vec
  • 需要通过名字或 ID 快速查找数据? → 用 HashMap
  • 处理文本? → 用 String

总结

掌握 Rust语言基础中的集合类型,是编写高效、安全 Rust 程序的关键一步。VecHashMap 是你日常开发中最常打交道的两种集合。通过本文的学习,你应该已经能够创建、操作并理解它们的基本用法了。

记住:Rust 的集合都强调内存安全和所有权规则,因此在使用时要特别注意变量的可变性(mut)以及借用规则。

继续练习吧!尝试写一个小程序,比如用 HashMap 统计一段文字中每个单词出现的次数,或者用 Vec 存储用户输入的数字并计算平均值。实践是最好的老师!

希望这篇关于 Rust集合类型 的教程对你有帮助。如果你是 Rust 新手,建议反复阅读并动手敲代码,加深理解。