Clap app 设置

混蛋, 这块不应该有个说明文档吗?

Clap 源码

subcommand_negates_reqs

用于主命令声明了必填项, 子命令不需要时, 添加此设置, 并将必填项定义为 Option<> required = true 即可实现

arg_required_else_help

不输入参数时, 默认输出 help 内容, 很直观, 很好用

使用方法

Derive 模式

1
2
3
#[derive(Parser)]
#[command(subcommand_negates_reqs = true)] # 需要使用应用列的蛇形命名法名称
struct Cli {...}

参考链接: SEAM

选项应用解释
IgnoreErrorsignore_errors忽略解析参数时的错误,不退出程序
AllowHyphenValuesallow_hyphen_values允许参数使用以连字符开头的值
AllowNegativeNumbersallow_negative_numbers允许参数接收负数
AllArgsOverrideSelfall_args_override_self参数覆盖已定义的同名参数,而不是追加
AllowMissingPositionalallow_missing_positional允许缺失位置参数,不报错退出
TrailingVarArgtrailing_var_arg允许定义尾随的可变参数
DontDelimitTrailingValuesdont_delimit_trailing_values不在尾随的可变参数值之间添加分隔符
InferLongArgsinfer_long_args自动推断长格式参数(--arg)
InferSubcommandsinfer_subcommands自动推断子命令
SubcommandRequiredsubcommand_required至少需要定义一个子命令,否则报错
AllowExternalSubcommandsallow_external_subcommands允许外部定义子命令
Multicallmulticall允许多次调用解析器解析参数
SubcommandsNegateReqssubcommands_negate_reqs如果定义了子命令,则位置参数不再是必须的
ArgsNegateSubcommandsargs_negate_subcommands如果定义了位置参数,则子命令不再是必须的
SubcommandPrecedenceOverArgsubcommand_precedence_over_arg子命令优先匹配,忽略参数长短格式歧义
ArgRequiredElseHelparg_required_else_help如果没有传递任何位置参数,显示帮助信息并退出
NextLineHelpnext_line_help每部分帮助信息显示在新行
DisableColoredHelpdisable_colored_help禁用彩色帮助信息
DisableHelpFlagdisable_help_flag禁用帮助标志 -h/--help
DisableHelpSubcommanddisable_help_subcommand禁用内置帮助子命令
DisableVersionFlagdisable_version_flag禁用版本标志 --version
PropagateVersionpropagate_version传递版本信息到子命令
Hiddenhidden隐藏选项在 usage 信息中
HidePossibleValueshide_possible_values隐藏选项的可能值在 usage 中
HelpExpectedhelp_expected期望必须调用帮助子命令
NoBinaryNameno_binary_name不显示程序二进制名称
ColorAutocolor_auto根据终端自动判断是否使用彩色
ColorAlwayscolor_always总是使用彩色
ColorNevercolor_never从不使用彩色
Builtbuilt内置模式,不再需要手动编译
BinNameBuiltbin_name_built使用二进制文件名作为内置模式
updatedupdated2023-08-072023-08-07
[mod] 添加源码位置