mcpField
S
solid-rust

solid-rust

github.com/fusengine开发3441 次安装2 周前更新
代码仓库

关于 solid-rust

solid-rust 是面向 Rust 2024 项目的模块化架构与 SOLID 原则 Skill。它规定模块位置、文件长度和文档要求,并要求实现前检查可复用代码。

主要功能

  1. 01功能模块置于 src/modules/
  2. 02共享代码置于 src/core/
  3. 03Trait 位置与泛型约束规则
  4. 04thiserror 与 rustdoc 要求
  5. 05实现前检查 DRY 与代码复用

适用场景

  1. 01规划新的 Rust 功能模块
  2. 02按 SOLID 架构规则审查代码
  3. 03搭建服务、Trait、处理器与测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/fusengine/agents --skill solid-rust

安装后在 Claude Code 中输入/solid-rust确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
architecture-patterns.md
dependency-inversion.md
interface-segregation.md
liskov-substitution.md
open-closed.md
single-responsibility.md
solid-principles.md
references/templates/
error.md
handler.md
module.md
service.md
test.md
trait-def.md

详细介绍

SOLID Rust 为 Rust 2024 版强制执行模块化架构:每项功能都位于 `src/modules/[feature]/` 下(handlers.rs、services.rs、repository.rs、traits.rs、models.rs),共享代码放在 `src/core/` 中;trait 只能放在 `traits.rs` 或 `src/core/traits/` 中;泛型使用 trait bound,而不是具体类型;自定义错误由 `thiserror` 处理;每个公开项都必须带有 rustdoc `///` 注释。

编写任何新代码之前,必须先对照 src/core/services 和 src/core/traits 检查是否符合 DRY 原则。概览请参阅 solid-principles.md;SRP/OCP/LSP/ISP/DIP 的详细信息请参阅各原则的参考文档;模块、服务、trait、处理器、错误和测试脚手架请参阅模板。

SOLID Rust - 模块化架构

Agent 工作流(必须遵循)

在进行任何实现之前,必须并行启动 3 个 Agent,每个 Agent 调用一次,并指定 name:

  1. fuse-ai-pilot:explore-codebase - 分析现有架构
  2. fuse-ai-pilot:research-expert - 通过 Context7 核实 Rust 文档
  3. fuse-ai-pilot:sniper - 实现后的验证

DRY - 先复用,再创建(必须遵循)

编写任何新代码之前:

  1. 使用 grep 搜索代码库,查找类似的 trait、服务或逻辑
  2. 检查共享位置:src/core/services/、src/core/traits/
  3. 如果存在类似代码 -> 扩展或复用,而不是重复创建
  4. 如果代码将由 2 个或更多功能使用 -> 在 src/core/ 中创建

架构(必须采用模块化结构)

层位置最大行数
处理器src/modules/[feature]/handlers.rs50
服务src/modules/[feature]/services.rs100
仓库src/modules/[feature]/repository.rs100
Traitsrc/modules/[feature]/traits.rs30
模型src/modules/[feature]/models.rs50
共享代码src/core/{services,traits,models}/-

绝不使用扁平的 src/ 结构——始终使用 src/modules/[feature]/


关键规则(必须遵循)

规则要求
文件行数限制100 行(达到 90 行时拆分)
处理器少于 50 行,将工作委托给服务
Trait只能放在 traits.rs 或 src/core/traits/ 中
Rustdoc每个公开项都必须有 /// 注释
错误处理使用 thiserror 处理自定义错误
泛型使用 trait bound,而不是具体类型

参考指南

概念
主题参考文档查阅时机
SOLID 概览solid-principles.md快速参考
SRPsingle-responsibility.md结构体臃肿时
OCPopen-closed.md添加实现时
LSPliskov-substitution.mdtrait 契约
ISPinterface-segregation.mdtrait 臃肿时
DIPdependency-inversion.md泛型/依赖注入
架构architecture-patterns.md模块化 crate
模板
模板使用时机
module.md功能模块结构
service.md业务逻辑服务
trait-def.mdTrait 定义
handler.mdHTTP 处理器(Axum)
error.md自定义错误(thiserror)
test.md单元测试和集成测试

禁止事项

反模式修正方法
文件超过 100 行达到 90 行时拆分
在 impl 文件中定义 trait移至 traits.rs
Box<dyn Any>使用适当的 trait bound
扁平的 src/ 结构使用 src/modules/[feature]/
在库代码中使用 Unwrap使用 Result<T, E>

评论

支持 Markdown