Rust 标准库:完全指南
Rust 标准库 (std) 是构建任何 Rust 应用程序的基础。它提供了一套可靠、高效且安全的工具,用于解决从集合操作到底层内存管理的常见任务。与许多其他语言不同,Rust 标准库的设计旨在最大限度地减少对基本操作的外部 crate 的依赖,同时保持接近 C/C++ 的性能。
标准库的主要模块
标准库按逻辑模块组织。让我们看看其中的关键模块:
std::collections— 数据结构:Vec、HashMap、HashSet、BTreeMap、LinkedList等。std::io— 输入输出操作:文件读写、流操作、缓冲。std::fs— 文件系统:创建、删除、复制文件和目录。std::thread— 多线程:创建线程,通过Mutex、Arc进行同步。std::sync— 同步原语:通道 (mpsc)、屏障、信号量。std::net— 网络编程:TCP/UDP 套接字、地址。std::time— 时间操作:测量、计时器、持续时间。std::mem— 内存管理:类型大小、对齐、swap、replace。
集合:从 Vec 到 HashMap
Rust 中的集合不仅仅是容器。它们实现了丰富的 API,并在编译时保证内存安全。最流行的集合是 Vec<T> —— 动态数组。
fn main() { let mut numbers: Vec<i32> = vec![1, 2, 3, 4]; numbers.push(5); // 可变迭代 for num in &mut numbers { *num *= 2; } // 过滤 let evens: Vec<&i32> = numbers.iter() .filter(|&&x| x % 2 == 0) .collect(); println!("{:?}", evens); // [2, 4, 6, 8, 10]}HashMap —— 带哈希的关联数组。值得注意的是,默认使用加密安全的哈希算法 (SipHash),以防止 HashDoS 攻击。
use std::collections::HashMap;
fn main() { let mut scores = HashMap::new(); scores.insert(String::from("Alice"), 100); scores.insert(String::from("Bob"), 85); // 安全地获取值 match scores.get(&String::from("Alice")) { Some(score) => println!("Score: {}", score), None => println!("Not found"), } // 使用迭代器遍历 for (name, score) in &scores { println!("{}: {}", name, score); }}输入输出和文件操作
std::io 模块提供了用于数据流操作的高级和低级工具。特别值得关注的是 Read 和 Write trait。
use std::fs::File;use std::io::{self, Read, Write};
fn read_file(path: &str) -> io::Result<String> { let mut file = File::open(path)?; let mut contents = String::new(); file.read_to_string(&mut contents)?; Ok(contents)}
fn write_file(path: &str, data: &str) -> io::Result<()> { let mut file = File::create(path)?; file.write_all(data.as_bytes())?; Ok(())}
fn main() -> io::Result<()> { write_file("example.txt", "Hello, Rust