用途:在项目形态已确定后,实现 Rust 命令行工具的行为,明确区分用户输入、命令执行、领域逻辑与输出,使 CLI 易于测试、提示信息清晰,并能用仓库的 Cargo 命令验证。
主要能力:先检查 CLI 形态,包括 Cargo.toml、src/main.rs、src/bin/、src/lib.rs、已有参数解析器或命令模块以及现有测试;随后识别命令面,包含命令名、子命令、标志与选项、位置参数、stdin/stdout/stderr、文件或环境变量以及退出码预期。实现上把用户输入解析为明确的命令数据,将领域逻辑放在接收普通 Rust 值的函数中,把打印与进程退出决策留在边缘层,内部函数返回结构化错误或清晰结果类型。输出上要求 stdout 仅输出被请求的命令结果,stderr 用于诊断、警告和失败,错误需说明失败操作与可能原因,仅在测试或下游依赖时保持文本稳定。
使用方式:使用标准库处理简单参数解析;若仓库已有解析器或错误处理 crate 则沿用。新增依赖须说明它替代了什么重复的解析、校验、帮助或错误行为,为何标准库或现有依赖不足,以及对 MSRV、二进制体积和包策略的影响,不要仅因流行而添加 CLI 框架。测试优先覆盖解析与命令执行函数的快速测试,例如 parses_verbose_flag;仅真正依赖可执行边界的行为(stdout、stderr、当前目录、环境、退出状态)才用进程级集成测试。
验证命令(按需选择最窄范围):cargo test -p package-name、cargo clippy -p package-name --all-targets --all-features、cargo fmt --check;跨包时用工作区级命令。输出应包含命令面、实现边界、依赖、测试与验证情况。限制:不要把领域行为放入参数解析代码,不要在可复用函数深处调用 std::process::exit,不要写不含操作与原因的模糊错误,不要无理由新增 CLI 依赖,也不要在测试、脚本或用户依赖时让 stdout/stderr 文本不稳定。