这段代码是 rust cli 的基础代码 如果用 mycli hello 运行的话 显示值是 ["mycli","hello"]:
fn main() {
let args: Vec<String> = env::args().collect();
print!("{:?}",args);
}
- 错误提示用
eprintln!输出到 stderr,这是 CLI 工具的常见做法。 - 如果想让参数解析更规范,可以用 clap
[dependencies]
clap = { version = "4", features = ["derive"] }
use clap::Parser;
#[derive(Parser)]
#[command(name = "hello", about = "CLI Demo")]
#[derive(Debug)]
struct Args {
/// 源文件路径(位置参数)
#[arg(short, long)]
src: String,
/// 目标文件路径(位置参数)
#[arg(short, long)]
dst: String,
/// 重复次数(选项参数)
#[arg(short, long, default_value_t = 1)]
count: u32,
/// 是否覆盖已有文件(布尔开关)
#[arg(short, long)]
force: bool,
}
fn main() {
let args = Args::parse();
println!("{:#?}", args);
}
帮助信息如下:
hello.exe --help`
CLI Demo
Usage: hello.exe [OPTIONS] --src <SRC> --dst <DST>
Options:
-s, --src <SRC> 源文件路径(位置参数)
-d, --dst <DST> 目标文件路径(位置参数)
-c, --count <COUNT> 重复次数(选项参数) [default: 1]
-f, --force 是否覆盖已有文件(布尔开关)
-h, --help Print help
浙公网安备 33010602011771号