Rust:
Чтение аргументов командной строки
Как это сделать:
Вот самый простой способ захватить аргументы:
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
println!("{:?}", args);
}
Запустите его с помощью cargo run arg1 arg2
. Вы увидите:
["path/to/executable", "arg1", "arg2"]
Аккуратный вариант с итераторами:
use std::env;
fn main() {
for arg in env::args().skip(1) {
println!("{}", arg);
}
}
Теперь попробуйте cargo run cool stuff
:
cool
stuff
Погружение
Исторически, аргументы командной строки являются данью тем временам, когда графические интерфейсы не были широко распространены. Сейчас они отлично подходят для скриптов, серверов или инструментов.
std::env::args
в Rust использует итератор, что эффективно с точки зрения памяти и лениво. Он также поддерживает Unicode. Есть также args_os
для необработанных строк ОС.
Для сложного парсинга полезны крейты вроде clap
или structopt
. Они разбирают флаги, опции и подкоманды.