繁体   English   中英

你能构建一个接受命令行 rest(或多个参数)的 structopt 解析器吗?

[英]Can you build a structopt parser that takes the rest of the command line (or multiple arguments)?

structopt有一个巧妙的功能,它可以接受Vec<T>的类型化参数,这将吞噬命令行的 rest。

#[structopt(long, short)]
values: Vec<u32>,

它还具有接受您创建的类型的能力

如果字段类型没有FromStr实现,或者您想提供FromStr以外的自定义解析方案,您可以使用parse(...)提供自定义字符串解析器

您创建的类型是否可以不是标量并且具有多个值或包装Vec<T>是否有一种方法可以为包装Vec<T>但对其重新排序的类型创建自定义解析器arguments 或包含更多的结构不止一个字段,例如像这样

struct Positionals {
  first: String,
  increment: String,
  last: String
}

我需要一个不同的结构,因为 arguments 名称取决于顺序,(如果有一个参数,它只是“最后一个”,如果有两个 arguments 第一个参数不是最后一个,它是“第一个”,第二个参数是“最后一个” ). 我想知道是否有一种方法可以编写理解这些细微差别(如上所述)的解析器,或者可以重新排序向量以适应它们。

我不相信这是目前可能的。 为获取vec::Drain的解析器或获取命令行的 rest 的解析器打开了一个 RFC 我还询问了其他方法来实现这一点。 回应是,

据我所知, clap基础结构( structopt仅在 struct 属性之上公开)不支持这一点。 clap 中的验证器(在structopt中被命名为解析器,因为它们验证和解析)是在每个参数上实现的,而不是在一组 arguments 上实现的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM