小编Sig*_*and的帖子

动态生成参数 Clap

我正在尝试弄清楚如何使用 Clap 从输入参数动态生成参数。

\n

我试图用 Clap 模拟以下 python 代码:

\n
parser = argparse.ArgumentParser()\nparser.add_argument("-i", type=str, nargs="*")\n(input_args, additional_args) = parser.parse_known_args()\nfor arg in input_args:\n  parser.add_argument(f\'--{arg}-bar\', required=true, type=str)\n\nadditional_config = parser.parse_args(additional_args)\n
Run Code Online (Sandbox Code Playgroud)\n

这样您就可以在命令中执行以下操作:

\n
./foo.py -i foo bar baz --foo-bar foo --bar-bar bar --baz-bar bar\n
Run Code Online (Sandbox Code Playgroud)\n

并从第一个参数动态生成附加参数。不确定是否可以在 Clap 中执行,但我认为这是可能的,因为自述文件指出您可以使用构建器模式动态生成参数 [1]。

\n

所以这是我尝试这样做的天真的尝试。

\n
use clap::{Arg, App};\n\nfn main()\xc2\xa0{\n  let mut app = App::new("foo")\n               .arg(Arg::new("input")\n               .short(\'i\')\n               .value_name("INPUT")\n               .multiple(true)\n               .required(true));\n  let matches = app.get_matches_mut();\n  let input: Vec<_> = matches.values_of("input").unwrap().collect()\n  for i in input {\n    app.arg(Arg::new(&*format!("{}-bar", i)).required(true))\n …
Run Code Online (Sandbox Code Playgroud)

command-line-arguments rust clap

7
推荐指数
1
解决办法
1295
查看次数

标签 统计

clap ×1

command-line-arguments ×1

rust ×1