5.5 标准库常用模块简介
听
Rust 的标准库(std)提供了丰富且高效的工具,覆盖了日常开发中常见的数据结构、文件操作、并发、输入输出等需求。虽然 Rust 语言核心很小,但标准库的设计使其足以支撑大多数系统级和应用级编程任务。
std::collections:常用集合类型
std::collections 模块包含多种动态大小的集合类型:
Vec<T>:可变长度的数组,支持在尾部高效添加/删除元素。HashMap<K, V>:基于哈希表的键值对集合,提供平均 O(1) 的查找性能。HashSet<T>:基于哈希表的无序唯一元素集合。BTreeMap<K, V>和BTreeSet<T>:基于 B 树的有序映射和集合,适合需要排序或范围查询的场景。LinkedList<T>:双向链表,适用于频繁在两端插入/删除的场景(但缓存局部性较差,通常不推荐优先使用)。
这些集合都实现了内存安全和零成本抽象,是构建复杂数据逻辑的基础。
std::fs:文件系统操作
std::fs 提供了跨平台的文件和目录操作接口:
use std::fs;
// 读取整个文件
let contents = fs::read_to_string("data.txt")?;
// 写入文件
fs::write("output.txt", "Hello, world!")?;
// 创建目录
fs::create_dir_all("logs")?;
// 遍历目录
for entry in fs::read_dir(".")? {
let path = entry?.path();
println!("{:?}", path);
}
所有操作都返回 Result,强制处理可能的 I/O 错误,体现了 Rust 的健壮性设计。
std::io:输入与输出
std::io 模块支持更细粒度的输入输出操作,包括:
stdin(),stdout(),stderr():标准流;BufReader/BufWriter:带缓冲的读写器,提升性能;Read和Writetrait:为自定义类型实现通用 I/O 接口。
例如,逐行读取标准输入:
use std::io::{self, BufRead};
for line in io::stdin().lock().lines() {
println!("You typed: {}", line?);
}
其他常用模块
std::env:访问环境变量、命令行参数、当前工作目录等。std::process:启动子进程、退出程序等。std::time:处理时间与延时(如Duration,Instant)。std::thread:基础线程支持(更高级的并发通常使用tokio或async-std等运行时)。std::path::Path和PathBuf:平台无关的路径操作。
使用标准库的最佳实践
- 优先使用标准库而非第三方 crate,除非有明确性能或功能需求;
- 注意区分
String(拥有所有权)与&str(字符串切片),以及Vec<T>与切片&[T]; - 利用
Result和Option处理可能失败的操作,避免 panic。
小结
Rust 标准库虽不庞大,但精炼实用,覆盖了系统编程的核心场景。掌握 std::collections、std::fs、std::io 等常用模块,能让你在不引入外部依赖的情况下完成大部分基础任务。同时,标准库的设计风格也体现了 Rust 的核心理念:安全、高效、显式错误处理。熟悉这些工具,是成为熟练 Rust 开发者的重要一步。
#Rust 入门教程
分享于 1 周前
上一篇:5.4 包、工作区与依赖管理
下一篇:第六章:集合类型与泛型