10个版本 (重大更新)
0.8.1 | 2022年3月9日 |
---|---|
0.8.0 | 2020年4月15日 |
0.7.0 | 2019年10月13日 |
0.6.0 | 2019年6月25日 |
0.3.0 | 2017年7月1日 |
#20 in #getopt
116,997 个月下载量
被 109 个crate (5个直接使用) 使用
63KB
1.5K SLoC
为 gumdrop
crate 提供 derive(Options)
实现
派生(选项)
derive(Options)
生成一个 Options
特质的实现,为装饰过的 struct
的每个字段创建一个选项。
有关其用法的示例,请参阅 gumdrop
的文档。
options
属性
通过向装饰过的结构体中的一个或多个字段添加 #[options(...)]
属性,可以控制 derive(Options)
的行为。
支持的 struct
字段项包括
command
表示一个字段代表一个子命令。该字段必须是Option<T>
类型,其中T
是实现Options
的类型。通常,这种类型是一个包含子命令选项类型的enum
。help_flag
将一个选项标记为帮助标志。该字段必须是bool
类型。名为help
的选项将自动接收此选项。no_help_flag
阻止一个选项被视为帮助标志。count
将一个字段标记为计数值。每当选项出现在参数中时,该字段将递增,即field += 1;
free
将一个字段标记为位置参数字段。非选项参数将用于填充所有free
字段,按声明的顺序。如果最后的free
字段类型为Vec<T>
,它将包含所有剩余的免费参数。short = "?"
将短选项名称设置为给定的字符no_short
阻止短选项被分配到该字段long = "..."
将长选项名称设置为给定的字符串no_long
阻止长选项被分配到该字段default
为选项字段提供一个默认值。该字段的值与参数值以相同的方式进行解析。default_expr
为选项字段提供一个默认值。该字段的值在编译时作为Rust表达式进行解析,并在处理任何参数值之前进行评估。
要使用此属性,必须启用default_expr
功能。required
如果选项不存在,将导致错误,除非至少还存在一个help_flag
选项。multi = "..."
允许多次解析选项,将每个解析值添加到字段中,使用命名方法。除非存在no_multi
选项,否则此行为自动应用于Vec<T>
字段。no_multi
将抑制自动将Vec<T>
字段标记为multi
not_required
将取消类型级别的required
标志(见下文)。help = "..."
设置从Options::usage
方法返回的帮助文本;字段文档注释也可以提供以设置帮助文本。如果两者都存在,则使用help
属性值。meta = "..."
设置接受参数的选项在用法中显示的元变量parse(...)
使用命名函数从字符串中解析值。有效的解析函数类型是parse(from_str = "...")
用于fn(&str) -> T
parse(try_from_str = "...")
用于fn(&str) -> Result<T, E> where E: Display
parse(from_str)
使用std::convert::From::from
parse(try_from_str)
使用std::str::FromStr::from_str
此外,还可以在类型级别设置以下标志来为所有包含的字段设置默认值: no_help_flag
,no_long
,no_short
和 required
。
enum
变体支持的项目有
name = "..."
设置用户界面的命令名称。
如果此选项不存在,将自动从变体名称生成一个。help = "..."
设置命令的帮助字符串;也可以提供变体文档注释来设置帮助文本。如果两者都存在,则使用help
属性值。
help
属性(或类型级别的文档注释)可用于提供一些简介文本,这些文本将出现在用法字符串中的选项帮助文本之前。
依赖关系
~1.5MB
~35K SLoC