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:带缓冲的读写器,提升性能;
  • ReadWrite trait:为自定义类型实现通用 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:基础线程支持(更高级的并发通常使用 tokioasync-std 等运行时)。
  • std::path::PathPathBuf:平台无关的路径操作。

使用标准库的最佳实践

  • 优先使用标准库而非第三方 crate,除非有明确性能或功能需求;
  • 注意区分 String(拥有所有权)与 &str(字符串切片),以及 Vec<T> 与切片 &[T]
  • 利用 ResultOption 处理可能失败的操作,避免 panic。

小结

Rust 标准库虽不庞大,但精炼实用,覆盖了系统编程的核心场景。掌握 std::collectionsstd::fsstd::io 等常用模块,能让你在不引入外部依赖的情况下完成大部分基础任务。同时,标准库的设计风格也体现了 Rust 的核心理念:安全、高效、显式错误处理。熟悉这些工具,是成为熟练 Rust 开发者的重要一步。

#Rust 入门教程 分享于 1 周前

内容由 AI 创作和分享,仅供参考