agents24 Rust 项目脚手架实战:用 `/systems-programming:rust-project` 一键生成生产级 Cargo 工程

发布时间:2026/9/12 4:18:54
agents24 Rust 项目脚手架实战:用 `/systems-programming:rust-project` 一键生成生产级 Cargo 工程 agents24 Rust 项目脚手架实战用/systems-programming:rust-project一键生成生产级 Cargo 工程【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents导读在 agents24 多 Harness Agent 插件市场中rust-project.md 是一条专注于Rust 项目脚手架生成的 Slash 命令它以自然语言描述为输入自动分析项目形态二进制工具、库、工作区、Web API、WebAssembly并产出符合 Rust 惯例的完整工程结构、Cargo.toml配置、模块组织、测试体系与开发工具链。阅读本文后你将掌握该命令的五类项目类型判定方法、从cargo new到生产配置的完整落地步骤以及如何与rust-proAgent、rust-async-patternsSkill 联动把一次脚手架调用升级为类型安全、错误处理规范、异步模型正确的可运行工程。命令定位项目脚手架三件套之一在 docs/usage.md 的Project Scaffolding命令分类中/systems-programming:rust-project与/python-development:python-scaffold、/javascript-typescript:typescript-scaffold并列为三大语言脚手架命令调用格式遵循全局约定/systems-programming:rust-project 需求描述命令本体位于 plugins/systems-programming/commands/rust-project.md其核心工作方式是把user_request标签内的$ARGUMENTS视为由调用者提供的数据而非覆盖指令这一框架约定详见 docs/authoring.md随后按分析项目类型 → Cargo 初始化 → 生成结构 → 配置工具链的流水线执行。命令完成后按固定 Output Format 交付项目结构树、Cargo.toml 配置、入口文件、测试、文档与开发工具配置六项产出。第一步判定项目类型命令会根据用户需求将项目归入五类之一每类对应不同的脚手架策略类型适用场景生成重点BinaryCLI 工具、应用程序、服务子命令分派、错误处理、异步入口Library可复用 crate、共享工具库最小依赖、公开 API、文档测试Workspace多 crate 项目、monorepo成员编排、依赖统一、resolverWeb APIActix/Axum 服务、REST API路由分层、中间件、数据库集成WebAssembly浏览器端应用目标平台与内存模型适配判断依据来自用户对可执行程序 / 库 / 多包 / 网络服务 / 前端目标等语义的描述。例如描述中带有CLI或daemon倾向二进制reusable crate倾向库microservices倾向 workspace。第二步用 Cargo 初始化工程无论何种类型脚手架都以cargo new为起点Cargo 会自动初始化 Git 仓库# 创建二进制项目默认 cargo new project-name cd project-name # 或创建库项目 cargo new --lib library-name随后根据类型补写.gitignoreecho /target .gitignore echo Cargo.lock .gitignore # 仅库项目要点二进制项目应提交Cargo.lock保证可复现构建库项目则通常忽略它把版本决策交给下游消费者。/target构建产物目录两类项目都应忽略。Binary 项目结构、依赖与入口目录结构binary-project/ ├── Cargo.toml ├── README.md ├── src/ │ ├── main.rs │ ├── config.rs │ ├── cli.rs │ ├── commands/ │ │ ├── mod.rs │ │ ├── init.rs │ │ └── run.rs │ ├── error.rs │ └── lib.rs ├── tests/ │ ├── integration_test.rs │ └── common/ │ └── mod.rs ├── benches/ │ └── benchmark.rs └── examples/ └── basic_usage.rs该结构体现了命令文档强调的 Rust 惯例cli.rs与commands/分离参数解析与执行逻辑解耦、error.rs集中错误定义、tests/common/共享集成测试夹具、benches/承载 Criterion 基准、examples/提供 API 使用范例。Cargo.toml生产级配置[package] name project-name version 0.1.0 edition 2021 rust-version 1.75 authors [Your Name emailexample.com] description Project description license MIT OR Apache-2.0 repository https://github.com/user/project-name [dependencies] clap { version 4.5, features [derive] } tokio { version 1.36, features [full] } anyhow 1.0 serde { version 1.0, features [derive] } serde_json 1.0 [dev-dependencies] criterion 0.5 [[bench]] name benchmark harness false [profile.release] opt-level 3 lto true codegen-units 1逐项解读这份清单的工程意义edition 2021rust-version 1.75与 rust-pro.md 声明的Rust 1.75 现代特性基线一致rust-version同时约束了 CI 与协作者的 MSRV。clap4.5 的derivefeature用派生宏声明 CLI 参数见下方cli.rs避免手写解析代码。tokio1.36 的fullfeature一次性启用 IO、time、sync、rt-multi-thread 等全部能力适合二进制主程序库项目则应裁剪 feature。anyhow用于应用层错误、serde/serde_json用于配置与数据序列化。criterion0.5 配[[bench]] harness false禁用内置 harness改用 Criterion 输出统计结果。release profile 三件套opt-level 3最大优化、lto true跨 crate 链接期优化、codegen-units 1牺牲增量编译换取更优代码生成——这是文档给出的默认追求极致性能的取舍若编译速度优先可适度放宽。src/main.rs异步入口与子命令分派use anyhow::Result; use clap::Parser; mod cli; mod commands; mod config; mod error; use cli::Cli; #[tokio::main] async fn main() - Result() { let cli Cli::parse(); match cli.command { cli::Commands::Init(args) commands::init::execute(args).await?, cli::Commands::Run(args) commands::run::execute(args).await?, } Ok(()) }模式要点#[tokio::main]将同步main包装为异步运行时入口anyhow::Result()让任何底层错误都能自动?传播到顶层子命令通过commands::xxx::execute(args)分发每个命令模块保持单一职责。src/cli.rs类型安全的参数定义use clap::{Parser, Subcommand}; #[derive(Parser)] #[command(name project-name)] #[command(about Project description, long_about None)] pub struct Cli { #[command(subcommand)] pub command: Commands, } #[derive(Subcommand)] pub enum Commands { /// Initialize a new project Init(InitArgs), /// Run the application Run(RunArgs), } #[derive(Parser)] pub struct InitArgs { /// Project name #[arg(short, long)] pub name: String, } #[derive(Parser)] pub struct RunArgs { /// Enable verbose output #[arg(short, long)] pub verbose: bool, }clap派生宏把Commands::Init/Commands::Run直接映射为init/run子命令InitArgs.name得到-n/--name选项RunArgs.verbose得到-v/--verbose布尔开关——所有参数类型、必填性、帮助文本都由类型系统在编译期保证这正是命令文档强调的strong type safety的具体载体。src/error.rs集中式错误模型use std::fmt; #[derive(Debug)] pub enum AppError { NotFound(String), InvalidInput(String), IoError(std::io::Error), } impl fmt::Display for AppError { fn fmt(self, f: mut fmt::Formatter) - fmt::Result { match self { AppError::NotFound(msg) write!(f, Not found: {}, msg), AppError::InvalidInput(msg) write!(f, Invalid input: {}, msg), AppError::IoError(e) write!(f, IO error: {}, e), } } } impl std::error::Error for AppError {} pub type ResultT std::result::ResultT, AppError;该模式手工实现Display与Errortrait提供NotFound、InvalidInput、IoError三类语义化错误变体并通过类型别名ResultT屏蔽标准库Result。当错误种类随项目扩张时可平滑演进为thiserror派生宏仓库中 rust-async-patterns/references/details.md 的ServiceError示例即展示了#[error(...)]派生写法或由anyhow::Context在调用侧补充上下文信息。Library 项目最小依赖与文档化公开 API目录结构library-name/ ├── Cargo.toml ├── README.md ├── src/ │ ├── lib.rs │ ├── core.rs │ ├── utils.rs │ └── error.rs ├── tests/ │ └── integration_test.rs └── examples/ └── basic.rsCargo.toml for Library[package] name library-name version 0.1.0 edition 2021 rust-version 1.75 [dependencies] # Keep minimal for libraries [dev-dependencies] tokio-test 0.4 [lib] name library_name path src/lib.rs设计原则库项目的[dependencies]保持最小化注释明示Keep minimal for libraries把异步测试所需的tokio-test放进dev-dependencies——它只影响开发期不污染下游依赖图。显式[lib]段声明 crate 名与入口路径避免包名与 crate 名不一致的歧义。src/lib.rsrustdoc 文档测试即示例//! Library documentation //! //! # Examples //! //! //! use library_name::core::CoreType; //! //! let instance CoreType::new(); //! pub mod core; pub mod error; pub mod utils; pub use core::CoreType; pub use error::{Error, Result}; #[cfg(test)] mod tests { use super::*; #[test] fn it_works() { assert_eq!(2 2, 4); } }三个要点模块级//!文档中的代码块是可编译的文档测试cargo test会执行它们保证示例与实现同步pub use重导出让使用者通过library_name::CoreType直达核心类型#[cfg(test)]内置单元测试模块与tests/下的集成测试从 crate 外部视角调用公开 API形成双层级测试体系。Workspace多 crate 工程的统一编排目录结构workspace/ ├── Cargo.toml ├── .gitignore ├── crates/ │ ├── api/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ ├── core/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── cli/ │ ├── Cargo.toml │ └── src/ │ └── main.rs └── tests/ └── integration_test.rsWorkspace 根 Cargo.toml[workspace] members [ crates/api, crates/core, crates/cli, ] resolver 2 [workspace.package] version 0.1.0 edition 2021 rust-version 1.75 authors [Your Name emailexample.com] license MIT OR Apache-2.0 [workspace.dependencies] tokio { version 1.36, features [full] } serde { version 1.0, features [derive] } [profile.release] opt-level 3 lto trueWorkspace 配置的两大价值[workspace.package]继承——成员 crate 通过version.workspace true引用根级元数据版本号、license 单点维护[workspace.dependencies]统一依赖——tokio、serde的版本与 feature 在全 workspace 保持一致避免多 crate 间依赖版本漂移。resolver 2启用 2021 edition 的依赖解析规则正确处理 feature 统一与 target 条件依赖。Web API 项目Axum 分层架构目录结构web-api/ ├── Cargo.toml ├── src/ │ ├── main.rs │ ├── routes/ │ │ ├── mod.rs │ │ ├── users.rs │ │ └── health.rs │ ├── handlers/ │ │ ├── mod.rs │ │ └── user_handler.rs │ ├── models/ │ │ ├── mod.rs │ │ └── user.rs │ ├── services/ │ │ ├── mod.rs │ │ └── user_service.rs │ ├── middleware/ │ │ ├── mod.rs │ │ └── auth.rs │ └── error.rs └── tests/ └── api_tests.rs分层思路routes声明 URL 映射handlers处理 HTTP 请求models定义数据模型services承载业务逻辑middleware放跨切面逻辑认证等error集中错误类型。这一分层与 rust-pro.md 中Modern web frameworks: axum, warp, actix-web的能力范围以及仓库rust-async-patternsSkill 中Repositorytrait 的异步数据访问模式相互印证。Cargo.toml for Web API[package] name web-api version 0.1.0 edition 2021 [dependencies] axum 0.7 tokio { version 1.36, features [full] } tower 0.4 tower-http { version 0.5, features [trace, cors] } serde { version 1.0, features [derive] } serde_json 1.0 sqlx { version 0.7, features [runtime-tokio-native-tls, postgres] } tracing 0.1 tracing-subscriber 0.3选型说明axum0.7 作为路由/中间件框架底层依赖tower服务抽象tower-http按需开启trace请求日志与cors跨域featuresqlx配置runtime-tokio-native-tlspostgres与 Tokio 运行时和 PostgreSQL 对齐tracingtracing-subscriber提供结构化日志与 span 追踪——与 rust-async-patterns 中Instrument with tracing的实践建议完全一致。src/main.rsAxumuse axum::{Router, routing::get}; use tower_http::cors::CorsLayer; use std::net::SocketAddr; mod routes; mod handlers; mod models; mod services; mod error; #[tokio::main] async fn main() { tracing_subscriber::fmt::init(); let app Router::new() .route(/health, get(routes::health::health_check)) .nest(/api/users, routes::users::router()) .layer(CorsLayer::permissive()); let addr SocketAddr::from(([0, 0, 0, 0], 3000)); tracing::info!(Listening on {}, addr); let listener tokio::net::TcpListener::bind(addr).await.unwrap(); axum::serve(listener, app).await.unwrap(); }要点Router::new()链式声明路由.route()挂载单一路径处理器.nest()将/api/users前缀委托给独立子路由模块.layer()叠加 CORS 中间件现代写法通过tokio::net::TcpListener::bind拿到 listener 后交给axum::serve替代已废弃的axum::Server。生产部署时应将CorsLayer::permissive()收敛为按域名配置的白名单并把监听地址与端口外置为配置项。开发工具链配置Makefile、rustfmt 与 clippyMakefile.PHONY: build test lint fmt run clean bench build: cargo build test: cargo test lint: cargo clippy -- -D warnings fmt: cargo fmt --check run: cargo run clean: cargo clean bench: cargo bench.PHONY声明避免与同名文件冲突lint目标用-D warnings把 clippy 警告提升为错误作为 CI 门槛fmt用--check而非直接格式化保证格式问题在提交前暴露。rustfmt.tomledition 2021 max_width 100 tab_spaces 4 use_small_heuristics Maxmax_width 100比默认 100 更宽松的换行阈值默认 100此处保持一致并显式化、tab_spaces 4控制缩进、use_small_heuristics Max让函数调用、结构体字段等按最大宽度启发式排版减少过度换行。clippy.tomlcognitive-complexity-threshold 30将 clippy 的认知复杂度阈值从默认 25 放宽到 30在抑制过度嵌套告警与保持可读性之间取得平衡避免对复杂业务函数误报。与 rust-pro Agent、rust-async-patterns Skill 的协同rust-project命令并非孤立存在它与同插件systems-programming的两个组件形成完整工作流rust-proAgent 提供语言级深度rust-pro.md 定义了面向 Rust 1.75 的专家能力——所有权与生命周期、GATs 与高级 trait、异步/并发、unsafe 与 FFI、性能剖析与交叉编译。脚手架生成骨架后Agent 负责把骨架填充为符合这些能力标准的实现。rust-async-patternsSkill 提供运行时模式SKILL.md 与其 references/details.md 覆盖JoinSet并发任务、mpsc/broadcast/oneshot/watch四类通道、thiserroranyhow错误分层、CancellationToken优雅停机、async trait、stream 处理与信号量限流等模式。当脚手架生成的服务需要并发与通信逻辑时这些模式直接可复用。例如脚手架生成 Axum Web API 后数据库访问层可套用 details.md 中#[async_trait] Repository模式批量拉取任务可套用JoinSetbuffer_unordered(limit)限流模式停机流程可套用signal::ctrl_c()CancellationToken模式。三者命令出骨架、Agent 出深度、Skill 出模式正好对应 docs/architecture.md 中Agent Skill Integration的组合设计。输出清单与验收标准命令完成后应按以下六项交付且满足对应质量门Project Structure完整目录树符合 idiomatic Rust 组织模块职责清晰、公开 API 收敛ConfigurationCargo.toml含依赖与构建设置edition、rust-version、profile、featuresEntry Pointmain.rs或lib.rs携带正确文档注释Tests单元测试#[cfg(test)]与集成测试tests/结构齐备DocumentationREADME.md与代码文档文档测试可运行Development ToolsMakefile、clippy.toml、rustfmt.toml齐备。最终验收可一键执行make fmt # 格式检查--check make lint # clippy -D warnings make test # 单元 集成 文档测试 make bench # Criterion 基准结合命令文档strong type safety, proper error handling, and comprehensive testing setup的收束要求一份符合验收的工程应能在不做任何代码改动的情况下通过上述全部命令——这正是本文所述脚手架流程的最终落地目标。【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询