Rust 集合与字符串学习笔记

本篇学习笔记主要介绍 Rust 的集合和字符串相关知识点,方便初学者快速了解 Rust 的基础数据结构。

集合

Rust 的集合分为两类:Vec 和 HashMap。其中 Vec 是一种动态数组,可以存储任何类型的元素;HashMap 则是一种键值对映射,也可以存储任何类型的值,但键必须是可哈希的(即实现了 Hash trait)。

Vec

Vec 可以通过以下方式进行初始化:

rustCopy Code
let v1: Vec<i32> = Vec::new(); // 创建一个空的 Vec let v2 = vec![1, 2, 3]; // 使用 vec! 宏创建包含初始值的 Vec

向 Vec 中添加元素有两种方式:

rustCopy Code
let mut v = Vec::new(); v.push(1); // 将值 1 添加到 Vec 的末尾 v.extend([2, 3].iter()); // 将数组 [2, 3] 中的元素添加到 Vec 的末尾

访问 Vec 中的元素可以使用索引或 get 方法:

rustCopy Code
let v = vec![1, 2, 3]; let first = v[0]; // 获取第一个元素 let second = v.get(1); // 获取第二个元素,返回 Option<&i32>

HashMap

HashMap 可以通过以下方式进行初始化:

rustCopy Code
use std::collections::HashMap; let mut scores = HashMap::new(); // 创建一个空的 HashMap scores.insert("Alice", 100); // 添加键值对 scores.insert("Bob", 90); let teams = vec!["Red", "Blue"]; let initial_scores = vec![10, 50]; let score_map: HashMap<_, _> = teams.iter().zip(initial_scores.iter()).collect(); // 使用 zip 和 iter 方法创建 HashMap

访问 HashMap 中的元素可以使用 get 方法:

rustCopy Code
let mut scores = HashMap::new(); scores.insert("Alice", 100); scores.insert("Bob", 90); let alice_score = scores.get("Alice"); // 获取 Alice 对应的值,返回 Option<&i32>

字符串

Rust 的字符串类型有两种:String 和 &str。其中 String 是可变的、拥有所有权的字符串,&str 则是不可变的字符串引用。

String

String 可以通过以下方式进行初始化:

rustCopy Code
let s1: String = String::new(); // 创建一个空的 String let s2 = "initial contents".to_string(); // 从字符串字面量创建 String let s3 = String::from("initial contents"); // 从字符串字面量创建 String

向 String 中添加字符或字符串有两种方式:

rustCopy Code
let mut s = String::from("foo"); s.push('bar'); // 将字符 'b' 添加到 String 的末尾 s.push_str("baz"); // 将字符串 "baz" 添加到 String 的末尾

&str

&str 可以通过以下方式进行初始化:

rustCopy Code
let s1: &str = ""; // 创建一个空的字符串引用 let s2 = "hello world"; // 创建一个字符串字面量

将 &str 转换为 String,可以使用 to_string 方法:

rustCopy Code
let s1 = "hello world"; let s2 = s1.to_string(); // 将 &str 转换为 String

实例

下面是一个简单的例子,展示了 Vec 和 String 的基本用法:

rustCopy Code
fn main() { let mut v = Vec::new(); v.push(1); v.push(2); v.push(3); for i in &v { println!("{}", i); } let s1 = String::from("hello"); let s2 = "world".to_string(); let s3 = s1 + &s2; // 使用 + 运算符组合两个字符串 println!("{}", s3); }

输出结果为:

Copy Code
1 2 3 helloworld

以上就是 Rust 集合和字符串的学习笔记,希望对初学者有所帮助。