Rust 标准库(std)字典:按模块速查高频类型与函数。
1. std::collections – 集合
描述
HashMap/BTreeMap/VecDeque/BinaryHeap;entry 惯用法。
语法和示例
use std::collections::{HashMap, HashSet, VecDeque, BinaryHeap, BTreeMap};
let mut m: HashMap<String, i32> = HashMap::new();
*m.entry("a".into()).or_insert(0) += 5;
let set: HashSet<i32> = [1,2].into();
let dq: VecDeque<i32> = VecDeque::new();
let mut heap = BinaryHeap::new(); heap.push(3); heap.pop(); // 大顶
let sorted: BTreeMap<String, i32> = BTreeMap::new();2. std::vec::Vec – 动态数组
描述
默认容器;push/pop/insert/retain。
语法和示例
let mut v = Vec::with_capacity(16);
v.push(1); v.insert(0, 0); v.pop();
v.len(); v.is_empty(); v.contains(&1);
v.retain(|&x| x > 0); // 原地过滤
v.iter().max(); v.sort(); v.dedup();
v.chunks(100); v.windows(2);
let mut it = v.into_iter(); // 消费迭代3. std::string – String/&str
描述
String 堆上可变;&str 借用切片;len 是字节。
语法和示例
let mut s = String::with_capacity(64);
s.push_str("a"); s.push('b');
s += "tail";
let slice: &str = &s;
s.len(); // 字节
s.chars().count(); // 字符
format!("{}-{}", a, b);
let n: i32 = "42".parse()?;
s.replace("a", "b"); s.split(',').collect::<Vec<_>>();4. std::fmt – 格式化
描述
{} Display / {:?} Debug;{:>8} 宽度、{:.2} 精度、{name} 命名。
语法和示例
println!("{}", s); // Display
println!("{:?}", v); // Debug
println!("{:08.3}", 3.14); // 0003.140
println!("{name} {x:?}", name = "a", x = v);
eprintln!("错误"); // stderr
write!(f, "...")?;5. std::option / result 方法链
描述
map/and_then/unwrap_or_else/ok_or。
语法和示例
opt.map(|x| x + 1)
.filter(|x| x > 2)
.unwrap_or(0);
res.map_err(|e| AppError::from(e))
.and_then(|v| validate(v));
opt.ok_or("缺值")?;
res.map(|v| v.len())
.unwrap_or_default();6. std::iter – 迭代器适配器
描述
惰性链;collect 驱动;take/skip/zip/flat_map/fold。
语法和示例
(0..10).filter(|x| x % 2 == 0)
.map(|x| x * x)
.take(3)
.collect::<Vec<_>>();
let total: i32 = xs.iter().sum();
let zipped: Vec<_> = a.iter().zip(b.iter()).collect();
let flat: Vec<_> = nested.iter().flatten().collect();
xs.iter().fold(0, |acc, x| acc + x);
xs.iter().enumerate().for_each(|(i, x)| {});7. std::fs / std::path – 文件路径
描述
fs 读写文件;Path/PathBuf 拼接。
语法和示例
use std::{fs, path::{Path, PathBuf}};
fs::write("a.txt", "内容")?;
fs::read_to_string("a.txt")?;
fs::read("bin")?; // Vec<u8>
fs::create_dir_all("x/y")?;
fs::remove_file("a")?; fs::remove_dir_all("x")?;
let p = Path::new("data").join("a.log");
p.exists(); p.is_file(); p.extension();
let pb: PathBuf = p.to_path_buf();8. std::time / Instant
描述
Instant 测耗时;Duration 表示时长。
语法和示例
use std::time::{Instant, Duration};
let t0 = Instant::now();
let elapsed = t0.elapsed();
std::thread::sleep(Duration::from_millis(500));
Duration::from_secs(2); Duration::from_secs_f64(0.5);9. std::thread / mpsc
描述
spawn/join;channel 收发;scoped 线程借栈数据(1.63+)。
语法和示例
use std::{thread, sync::mpsc};
let h = thread::spawn(|| { heavy() });
h.join()?;
let (tx, rx) = mpsc::channel();
tx.send(42)?;
thread::scope(|s| { // 可借用栈数据
s.spawn(|| use_stack(&data));
});10. std::sync – 同步原语
描述
Mutex/RwLock/Arc/atomic;OnceLock 惰性初始化。
语法和示例
use std::sync::{Arc, Mutex, OnceLock, atomic::{AtomicUsize, Ordering}};
let counter = Arc::new(Mutex::new(0));
let c2 = Arc::clone(&counter);
thread::spawn(move || { *c2.lock().unwrap() += 1; });
static CONFIG: OnceLock<Config> = OnceLock::new();
CONFIG.get_or_init(|| load());
let hits = AtomicUsize::new(0);
hits.fetch_add(1, Ordering::Relaxed);11. std::process / env
描述
命令行参数与环境变量;退出码;子进程。
语法和示例
use std::process::{Command, exit};
let args: Vec<String> = std::env::args().collect();
std::env::var("HOME")?;
let out = Command::new("git").arg("status").output()?;
String::from_utf8(out.stdout)?;
exit(1);12. Box / Rc / RefCell – 智能指针
描述
Box 堆;Rc 共享;RefCell 运行时借用;Cow 写时克隆。
语法和示例
use std::{rc::Rc, cell::RefCell, borrow::Cow};
let boxed = Box::new(5);
let shared = Rc::new(RefCell::new(vec![1]));
shared.borrow_mut().push(2);
let cow: Cow<str> = Cow::from(input);
let owned = cow.into_owned();