gpt4 book ai didi

rust - 如何使用structopt将不可能的值附加到结构上?

转载 作者:行者123 更新时间:2023-12-03 11:40:00 24 4
gpt4 key购买 nike

clap 允许您像这样使用 possible_values 提供可接受值的列表。

let mode_vals = ["fast", "slow"];
.possible_values(&mode_vals)

如何用 structopt 做到这一点?

最佳答案

clappossible_values作为字段选项公开,如this structopt example所示:

//! How to use `arg_enum!` with `StructOpt`.

use clap::arg_enum;
use structopt::StructOpt;

arg_enum! {
#[derive(Debug)]
enum Baz {
Foo,
Bar,
FooBar
}
}

#[derive(StructOpt, Debug)]
struct Opt {
/// Important argument.
#[structopt(possible_values = &Baz::variants(), case_insensitive = true)]
i: Baz,
}

fn main() {
let opt = Opt::from_args();
println!("{:?}", opt);
}

值得注意的是,这也利用了 case_insensitive,以允许接受这些变体的任何情况。

如果要进行更精细的控制,可以省略 case_insensitive,而是自己实现变体:
use structopt::StructOpt;

#[derive(Debug)]
enum Baz {
Foo,
Bar,
FooBar
}

impl Baz {
fn variants() -> [&'static str; 3] {
["foo", "bar", "foo-bar"]
}
}

#[derive(StructOpt, Debug)]
struct Opt {
/// Important argument.
#[structopt(possible_values = &Baz::variants())]
i: Baz,
}

fn main() {
let opt = Opt::from_args();
println!("{:?}", opt);
}

最后,您也可以以相同的方式使用字符串数组。

关于rust - 如何使用structopt将不可能的值附加到结构上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59115832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com