我正在使用clap
crate 来处理命令行参数。如何同时打印版本号和自定义命令行参数?下面的代码运行时cargo run -- --name Harry --version
仅打印版本号。
use clap::Parser;
/// Simple program to greet a person
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Args {
/// Name of the person to greet
#[arg(short, long)]
name: String,
/// Number of times to greet
#[arg(short, long, default_value_t = 1)]
count: u8,
}
fn main() {
let args = Args::parse();
for _ in 0..args.count {
println!("Hello {}!", args.name);
}
}
电流输出
clap_demo 0.1.0
预期输出
Hello Harry!
clap_demo 0.1.0
Cargo.toml
[package]
name = "clap_demo"
version = "0.1.0"
edition = "2021"
[dependencies]
clap = { version = "4.5.26", features = ["derive", "env"] }
自动生成的
version
有动作ArgAction::Version
,只显示名称和版本。如果您想自定义行为,您需要禁用自动生成的行为并添加一个新的行为,如下所示:
注意:
crate_name!
需要crate_version!
拍手的cargo
功能。