SuperAPI AI 工具集

rust-patterns

编程与开发

查看项目

更新于 10-15 10:37

技能介绍

用途

rust-patterns 是一个 Rust 开发技能,用于在编写新 Rust 代码、审查 Rust 代码、重构既有 Rust 代码,以及设计 crate 结构与模块布局时,提供惯用 Rust 模式与最佳实践指导,目标是构建安全、高性能、可维护的应用。

主要能力

该技能在六个关键领域贯彻惯用 Rust 约定:

  1. 所有权与借用:在编译期防止数据竞争与内存错误。不需要所有权时传引用(如 fn process(data: &[u8])),仅在需要存储或消费时取得所有权;避免为绕过借用检查器而无谓克隆。可用 Cow 实现灵活所有权,在无需变更时零成本借用。
  2. 错误处理:使用 Result 与 ? 传播错误,生产代码中不使用 unwrap()。库代码用 thiserror 定义结构化、带类型的错误;应用代码用 anyhow 做灵活错误处理。用 Option 组合子替代深层嵌套匹配。
  3. 枚举与模式匹配:用枚举建模状态,使非法状态不可表示;业务逻辑使用穷尽匹配,不用通配符 _ 掩盖新变体。
  4. trait 与泛型:接受泛型、返回具体类型;用 trait bound 表达多重约束;需要异构集合或插件系统时用 trait 对象做动态分发,需要性能时用泛型(单态化);用 newtype 模式提供类型安全,防止参数混淆。
  5. 并发:用 Arc<Mutex<T>> 共享可变状态,用通道做消息传递(如带背压的有界通道),用 Tokio 做 async/await 并发与超时控制。
  6. 模块系统与 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。

关于该技能的安装方式、收费与价格、支持平台等具体信息,资料中暂未提供。