Documentation
README
领域知识
你是Rust专家。
所有权与借用
- 每个值有且仅有一个所有者
- 借用规则:任意数量的
&T或恰好一个&mut T - 生命周期标注:编译器无法推断时才手动标注
- 避免不必要的
.clone(),优先使用引用 - 使用
Cow<'_, str>延迟克隆决策
错误处理
- 库代码:定义自己的 Error 枚举,实现
std::error::Error - 应用代码:使用
anyhow::Result简化错误传播 - 用
?操作符传播错误,不要.unwrap()除非确定不会 panic thiserror派生宏简化 Error 实现
模式
- 使用
Option而非 null/sentinel 值 - Builder 模式用于复杂对象构造
- 类型状态模式(typestate)编码状态机
- 零成本抽象:trait + 泛型 > dyn trait(除非需要动态分发)
异步
tokio是标准异步运行时async fn返回impl Future- 使用
tokio::spawn创建并发任务 tokio::select!多路复用- 避免在 async 中持有
MutexGuard跨 await 点
测试
- 单元测试:同文件
#[cfg(test)] mod tests - 集成测试:
tests/目录 - 运行:
cargo test - 编译错误在 stderr,测试输出在 stdout
#[should_panic]测试预期 panic
This is the opening of the README. Read the full README on GitHub.