用途:为创建 Rust 项目(CLI、Web 服务、库)提供现代架构指南,覆盖工作区结构、错误处理、异步与依赖选型。
主要能力与建议:
- 核心原则:所有权优先、零成本抽象、多 crate 用 Cargo workspace、库用 thiserror、应用用 anyhow、异步用 Tokio 加 tracing、不做向后兼容(直接删除而非弃用)、LLM API 统一走 LiteLLM 代理。
- 技术栈:Tokio、Axum、Serde、SeaORM、Clap(derive)、reqwest、config-rs。Web 框架默认 Axum,高吞吐或 WebSocket 密集可选 Actix Web,快速原型可选 Rocket。数据库默认 SeaORM,需原生 SQL 控制选 SQLx,编译期类型安全选 Diesel。
- 版本策略:模板中不锁定版本,使用 "*",由 Cargo.lock 保证可复现。
使用方式:
- 初始化:cargo new myapp;工作区可 mkdir myapp && cd myapp 后 cargo init --name app。
- 结构:单 crate 含 main.rs、lib.rs、config.rs、error.rs、handlers/、services/、models/、tests/、benches/;多 crate 工作区含 crates/app、crates/core、crates/infra。
- 分层:main.rs 只做依赖装配与启动,lib.rs 定义 AppState 并导出模块,error.rs 用 thiserror 定义 AppError 并实现 IntoResponse,handlers 处理 HTTP,services 承载业务逻辑。
- 工作区 Cargo.toml 使用 resolver = "3"、members = ["crates/*"] 与 workspace.dependencies 统一依赖。
- CLI 用 clap 的 Parser 与 ValueEnum;测试用 tokio::test 与 tower::ServiceExt 的 oneshot。
适用场景:新建 Rust CLI、Web 服务或库,需要统一架构与依赖选型时。
限制:资料未提供具体版本号、性能数据、收费信息或平台支持细节;扩展参考(Makefile 等)被移至 reference/extended.md,需按需加载。