Rust:
Läsa in kommandoradsargument
How to:
Rusts standardbibliotek har det du behöver. Vi använder std::env::args
som ger oss tillgång till kommandoradsargumenten.
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
// Skriver ut argumenten
for (index, arg) in args.iter().enumerate() {
println!("Argument {}: {}", index, arg);
}
}
Kör programmet så här:
$ cargo run -- ett argument "ett annat argument"
Förväntad utskrift:
Argument 0: target/debug/my_program
Argument 1: ett
Argument 2: argument
Argument 3: ett annat argument
Deep Dive
Kommandoradsargument har använts sedan tidiga datorprogram då användargränssnitt var textbaserade. Alternativ inkluderar att använda miljövariabler eller config-filer för att skicka in inställningar.
Rust använder std::env::args
som returnerar en iterator. Detta är användbart för att undvika att ladda alla argument i minnet samtidigt; viktigt för stora argumentlistor. Funktionen args()
ignorerar felaktiga Unicode-argument.
Ett mer robust alternativ är std::env::args_os
, som hanterar argument som inte är giltig Unicode. För att hantera argument mer detaljerat finns biblioteket clap
.