SuperAPI AI 工具集

clap-rust

编程与开发

查看项目

更新于 10-16 00:05

技能介绍

用途:为使用 clap-rs/clap 构建的 Rust CLI 提供约定,适用于编写或审查命令行程序。资料以 docs.rs 上 clap 4.6.1 为基线,建议优先参考已发布文档而非旧代码片段。

主要能力:clap 可用 derive 声明式或 builder 过程式构建解析器。静态应用 CLI 优先用 derive;参数动态生成、增强其他解析器或 derive 难以表达时用 builder。derive 提供 Parser、Args、Subcommand、ValueEnum;builder 提供 Command、Arg、ArgAction、value_parser。

依赖与特性:Cargo 中可写 clap = { version = "4.6", features = ["derive", "env", "wrap_help"] }。默认特性含 std、color、help、usage、error-context、suggestions;derive 启用派生宏,cargo 启用 command!() 等,env 支持从环境变量读值,unicode 支持 Unicode,wrap_help 按终端宽度换行,string 允许运行时字符串。除非项目明确采用预览 API,避免 unstable-v5。

用法要点:用文档注释作帮助文本;Option<T> 表示可选,T 表示必填;default_value_t 用于类型化默认值,default_value 用于字符串默认值;value_enum 为枚举生成可选值与校验;#[command(flatten)] 复用共享参数。布尔与计数标志应显式指定 ArgAction:SetTrue、SetFalse、Count,重复值用 Vec<T> 或 Append。类型化解析优先用 PathBuf、SocketAddr、数值类型和 ValueEnum,范围或自定义校验用 value_parser。环境变量用 #[arg(env = "...")] 并启用 env 特性。子命令可用 subcommand_required 与 arg_required_else_help 提升体验。

测试:用 CommandFactory 的 debug_assert() 校验命令结构,用 try_parse_from 或 try_get_matches_from 测试,避免在测试中调用会退出的 parse()/get_matches()。

限制:资料未提供具体收费、平台或效果信息;业务逻辑应放在解析之后,不要写入解析器定义。