#flags #args #command-line #getopt #options

gumdrop_derive

为gumdrop提供自定义派生支持

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

Download history 21927/week @ 2024-03-14 20854/week @ 2024-03-21 17473/week @ 2024-03-28 21423/week @ 2024-04-04 20509/week @ 2024-04-11 25413/week @ 2024-04-18 29879/week @ 2024-04-25 28773/week @ 2024-05-02 34213/week @ 2024-05-09 38808/week @ 2024-05-16 38538/week @ 2024-05-23 39336/week @ 2024-05-30 29414/week @ 2024-06-06 27541/week @ 2024-06-13 30155/week @ 2024-06-20 23292/week @ 2024-06-27

116,997 个月下载量
109 个crate (5个直接使用) 使用

MIT/Apache

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_flagno_longno_shortrequired

enum 变体支持的项目有

  • name = "..." 设置用户界面的命令名称。
    如果此选项不存在,将自动从变体名称生成一个。
  • help = "..." 设置命令的帮助字符串;也可以提供变体文档注释来设置帮助文本。如果两者都存在,则使用 help 属性值。

help 属性(或类型级别的文档注释)可用于提供一些简介文本,这些文本将出现在用法字符串中的选项帮助文本之前。

依赖关系

~1.5MB
~35K SLoC