用途
rust-patterns 是一个 Rust 开发技能,用于在编写新 Rust 代码、审查 Rust 代码、重构既有 Rust 代码,以及设计 crate 结构与模块布局时,提供惯用 Rust 模式与最佳实践指导,目标是构建安全、高性能、可维护的应用。
主要能力
该技能在六个关键领域贯彻惯用 Rust 约定:
- 所有权与借用:在编译期防止数据竞争与内存错误。不需要所有权时传引用(如
fn process(data: &[u8])),仅在需要存储或消费时取得所有权;避免为绕过借用检查器而无谓克隆。可用Cow实现灵活所有权,在无需变更时零成本借用。 - 错误处理:使用
Result与?传播错误,生产代码中不使用unwrap()。库代码用thiserror定义结构化、带类型的错误;应用代码用anyhow做灵活错误处理。用 Option 组合子替代深层嵌套匹配。 - 枚举与模式匹配:用枚举建模状态,使非法状态不可表示;业务逻辑使用穷尽匹配,不用通配符
_掩盖新变体。 - trait 与泛型:接受泛型、返回具体类型;用 trait bound 表达多重约束;需要异构集合或插件系统时用 trait 对象做动态分发,需要性能时用泛型(单态化);用 newtype 模式提供类型安全,防止参数混淆。
- 并发:用
Arc<Mutex<T>>共享可变状态,用通道做消息传递(如带背压的有界通道),用 Tokio 做 async/await 并发与超时控制。 - 模块系统与 crate 结构:按领域而非按类型组织模块;最小化可见性,内部共享用
pub(crate),从 lib.rs 重导出公共 API。
此外还涵盖结构体与数据建模(如 Builder 模式)、迭代器与闭包(优先迭代器链而非手写循环,用 collect() 配合类型标注,收集 Result 时遇首个错误短路)、unsafe 代码的适用与不适用场景,以及工具链集成。
使用方式
该技能以指导与代码示例的形式提供,在编写、审查或重构 Rust 代码时应用其中的模式。文档给出惯用法速查表,包括:借用而非克隆、让非法状态不可表示、用 ? 替代 unwrap()、在边界处解析而非校验、用 newtype 保证类型安全、优先迭代器而非循环、对 Result 使用 #[must_use]、用 Cow 实现灵活所有权、穷尽匹配、最小化 pub 暴露面。
工具链命令示例:
cargo build
cargo check # 快速类型检查,不生成代码
cargo clippy # lint 与建议
cargo fmt # 格式化代码
cargo test
cargo test -- --nocapture # 显示 println 输出
cargo test --lib # 仅单元测试
cargo test --test integration # 仅集成测试
cargo audit # 安全审计
cargo tree # 依赖树
cargo update # 更新依赖
cargo bench # 运行基准测试
适用场景
- 编写新的 Rust 代码
- 审查 Rust 代码
- 重构既有 Rust 代码
- 设计 crate 结构与模块布局
限制与注意事项
文档强调应避免的反模式:生产代码中的 .unwrap();为满足借用检查器而不理解原因地 .clone();在 &str 足够时使用 String;库中使用 Box<dyn Error>(应改用 thiserror);忽略 must_use 警告;在 async 上下文中阻塞(如用 std::thread::sleep 而非 tokio::time::sleep)。unsafe 仅在 FFI 边界(带文档化不变量与 Safety 注释)或性能关键路径且有正确性证明时可接受,不得用于绕过借用检查器、图方便、缺少 Safety 注释或在不相关类型间 transmute。
关于该技能的安装方式、收费与价格、支持平台等具体信息,资料中暂未提供。