Rust 是否可以使用Clap配置未知大小的参数组?

Rust 是否可以使用Clap配置未知大小的参数组?,rust,clap,Rust,Clap,我正在构建一个CLI,它可以调用其他具有自己的选项和参数的底层程序。我希望能够通过CLI将这些选项传递给程序 $ cli --program [PROGRAM] --programOpts[OPT1, OPT2, ...] 例如: $ cli --program foo --programOpts.bar 'foo' --programOpts.foo 'bar' ^在这种情况下,cli不知道programOpts中的bar和foo。CLI只知道programOpts,它是特定于正在调用的底

我正在构建一个CLI,它可以调用其他具有自己的选项和参数的底层程序。我希望能够通过CLI将这些选项传递给程序

$ cli --program [PROGRAM] --programOpts[OPT1, OPT2, ...]
例如:

$ cli --program foo --programOpts.bar 'foo' --programOpts.foo 'bar'
^在这种情况下,
cli
不知道
programOpts
中的
bar
foo
。CLI只知道
programOpts
,它是特定于正在调用的底层程序的未知选项向量

我希望Clap有一个API来实现这样的东西(查看
Arg
ArgGroup
),但它似乎不是这样


有这样的API吗?

在进一步研究之后,我决定走一条稍微不同的道路,而是利用已知的UNIX
--
语法

这意味着
--
之后的所有选项和标志都将传递给底层程序:

$ cli --program [PROGRAM] -- foo bar --bazinga --yay=w00t

这可以通过使用Arg structs上的Clap的
.raw()
配置来实现。

如果你说你的参数是
Vec
,它是否有效?如果你不能假设这些值是用UTF-8编码的,请看一下
Clap::Values
,使用
clap::OsValues
@FrederikDS,但最终将得到不同的API:--选择“一”树“两”树”。我在寻找:--opts.one'foo'--opts.two'bar其中'one'和'two'不为人所知作为CLI工具的用户,我会对
--programOpts.bar'foo'
语法感到惊讶。我更希望看到类似于
--programOpts'bar=foo'
的东西