这段代码是 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
posted on 2026-10-20 11:52  Freud  阅读(5)  评论(0)    收藏  举报