归纳 Rust 的所有权与借用、match 模式匹配、Option 与 Result、trait 实现以及 Vec/HashMap 等常用集合,适合被编译器报错卡住时对照排查。
所有权与借用
值同一时刻只有一个所有者,赋值即转移;共享与独占两种借用不能在同一作用域并存,编译期就挡住数据竞争。想保留原变量就调用克隆方法,或者干脆改传引用,别硬扛报错。
let v = vec![1, 2];
match 模式匹配
模式匹配必须穷尽所有分支,用下划线兜底;支持区间、守卫条件与元组解构,只关心一种情况时改用条件匹配更利落。匹配会移动值,想借用它时记得在模式前加引用符号。
match n { _ => () }
Option 与 Result
Option 表示可能为空,Result 表示可能失败,都不允许直接当值用。问号把错误向上传播,兜底方法给默认值,比随意解包安全;库代码里尽量别用强制解包,把选择权交给调用方。
let x: Option = None;
trait 与实现
trait 定义共享行为,用实现块为类型实现;派生属性可自动获得调试输出、克隆等能力,泛型参数可用约束收紧范围。想让自定义类型支持打印,派生调试能力最省事。
struct Post { title: String }
常用集合
动态数组是可变列表,哈希映射存键值,字符串可增长。下标越界会崩溃,安全访问用 get 拿到 Option 再处理;键可能已存在时用 entry 配合插入默认值更顺手。
let mut m = std::collections::HashMap::new();
错误传播与 main 返回
main 可以直接返回 Result,配合问号把错误交给运行时打印,写命令行小工具时不必手写大段匹配分支。返回 Ok 表示成功,任何一步出错都会自动提前返回并打印错误信息。
fn main() -> std::io::Result<()> { Ok(()) }