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>字段标记为multinot_required将取消类型级别的required标志(见下文)。help = "..."设置从Options::usage方法返回的帮助文本;字段文档注释也可以提供以设置帮助文本。如果两者都存在,则使用help属性值。meta = "..."设置接受参数的选项在用法中显示的元变量parse(...)使用命名函数从字符串中解析值。有效的解析函数类型是parse(from_str = "...")用于fn(&str) -> Tparse(try_from_str = "...")用于fn(&str) -> Result<T, E> where E: Displayparse(from_str)使用std::convert::From::fromparse(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