Rust 是否可以使用Clap配置未知大小的参数组?
我正在构建一个CLI,它可以调用其他具有自己的选项和参数的底层程序。我希望能够通过CLI将这些选项传递给程序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 --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'
的东西