Rust 标准库详解

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();
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇