在 Clap 中,我们可以根据https://docs.rs/clap/latest/clap/trait.ValueEnum.html使用 enum 作为 cli 的输入:
#[derive(clap::Parser)]
struct Args {
#[clap(value_enum)]
level: Level,
}
#[derive(clap::ValueEnum, Clone)]
enum Level {
Debug,
Info,
Warning,
Error,
}
Run Code Online (Sandbox Code Playgroud)
我们可以像这样提供默认值:
struct Args {
#[clap(value_enum, default_value="debug")]
level: Level,
}
Run Code Online (Sandbox Code Playgroud)
这有效。但是,有没有办法以类型安全的方式提供默认值?
Fin*_*nis 19
使用default_value_t:
use clap::{Parser, ValueEnum};
#[derive(Parser, Debug)]
struct Args {
#[clap(value_enum, default_value_t=Level::Debug)]
level: Level,
}
#[derive(ValueEnum, Clone, Debug)]
enum Level {
Debug,
Info,
Warning,
Error,
}
fn main() {
println!("{:?}", Args::parse());
}
Run Code Online (Sandbox Code Playgroud)
Args { level: Debug }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4801 次 |
| 最近记录: |