归纳 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(()) }