Rust:
Lesen von Kommandozeilenargumenten
So geht’s:
Rust stellt die Struktur std::env::args
zur Verfügung, die eine Sammlung der Kommandozeilenargumente bietet. Hier ist ein einfaches Beispiel:
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
for (index, argument) in args.iter().enumerate() {
println!("Argument {}: {}", index, argument);
}
}
Angenommen, du startest dein Programm mit cargo run arg1 arg2
, wäre die Ausgabe:
Argument 0: target/debug/programmname
Argument 1: arg1
Argument 2: arg2
Tiefgang
Historisch gesehen kommen Kommandozeilenargumente aus der Zeit der Terminal-Computer, wo Grafikoberflächen selten waren. Rust bietet eine moderne, sichere Möglichkeit, diese zu nutzen. Es gibt Alternativen, wie clap
, structopt
oder getopts
, die ergonomischere Interfaces für komplexe Parameter bieten. std::env::args
ignoriert das erste Argument (den Programmnamen), während std::env::args_os
auch nicht-valides Unicode berücksichtigt. Sich mit den Implementationen hinter std::env
zu befassen, lohnt sich, um zu verstehen, wie Rust mit OS-interfacing und Error handling umgeht.