小编典典

如何在 Rust 中访问命令行参数?

all

Rust 教程没有解释如何从命令行获取参数。fn main()在所有示例中仅以空参数列表显示。

访问命令行参数的正确方法是什么main


阅读 108

收藏
2022-08-20

共1个答案

小编典典

您可以使用std::env::argsorstd::env::args_os函数访问命令行参数。这两个函数都返回参数的迭代器。前者迭代Strings
(易于使用),但如果其中一个参数不是有效的 unicode,则会出现恐慌。后者迭代OsStrings 并且从不恐慌。

请注意,迭代器的第一个元素是程序本身的名称(这是所有主要操作系统的约定),因此第一个参数实际上是第二个迭代元素。

处理结果的一种简单方法args是将其转换为Vec

use std::env;

fn main() {
    let args: Vec<_> = env::args().collect();
    if args.len() > 1 {
        println!("The first argument is {}", args[1]);
    }
}

您可以使用整个标准迭代器工具箱来处理这些参数。例如,仅检索第一个参数:

use std::env;

fn main() {
    if let Some(arg1) = env::args().nth(1) {
        println!("The first argument is {}", arg1);
    }
}

您可以在crates.io上找到用于解析命令行参数的库:

  • docopt:您只需编写帮助消息,并为您生成解析代码。
  • clap:您使用流利的 API 描述要解析的选项。比 docopt 更快,并为您提供更多控制。
  • getopts:流行的 C 库的端口。更低级别,甚至更多控制。
  • structopt:建立在 clap 之上,使用起来更加符合人体工程学。
2022-08-20