Rust 教程没有解释如何从命令行获取参数。fn main()在所有示例中仅以空参数列表显示。
fn main()
访问命令行参数的正确方法是什么main?
main
您可以使用std::env::argsorstd::env::args_os函数访问命令行参数。这两个函数都返回参数的迭代器。前者迭代Strings (易于使用),但如果其中一个参数不是有效的 unicode,则会出现恐慌。后者迭代OsStrings 并且从不恐慌。
std::env::args
std::env::args_os
String
OsString
请注意,迭代器的第一个元素是程序本身的名称(这是所有主要操作系统的约定),因此第一个参数实际上是第二个迭代元素。
处理结果的一种简单方法args是将其转换为Vec:
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上找到用于解析命令行参数的库: