Läsa in kommandoradsargument

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.

See Also