Schrijven naar standaardfout

Rust:
Schrijven naar standaardfout

Hoe:

Rust maakt het schrijven naar stderr eenvoudig. Gebruik de macro eprintln! voor tekst, net zoals println!, maar dan voor fouten.

fn main() {
    // Reguliere uitvoer
    println!("Dit is een regulier bericht.");

    // Foutuitvoer
    eprintln!("Dit is een foutbericht.");
}

Voorbeelduitvoer:

Dit is een regulier bericht.
Dit is een foutbericht.

Merk op dat het foutbericht naar stderr gaat. In een terminal zul je het verschil niet zien. Echter, als je stdout omleidt, verschijnt stderr nog steeds in de console.

$ cargo run > output.txt
Dit is een foutbericht.

Hier zal output.txt alleen “Dit is een regulier bericht.” bevatten.

Diepgaande Verkenning

Het scheiden van stdout en stderr stelt Unix-systemen historisch in staat om reguliere en foutgegevens anders te behandelen. Het is een goede praktijk en helpt bij automatisering en logging.

Alternatieven voor het schrijven naar stderr zijn lager niveau, zoals het gebruik van std::io::stderr. Dit geeft meer controle en werkt goed voor niet-tekstgegevens.

use std::io::{self, Write};

fn main() -> io::Result<()> {
    let stderr = &mut io::stderr();
    
    // Schrijf een string rechtstreeks naar stderr
    writeln!(stderr, "Fout: De operatie kon niet voltooid worden")?;
    
    Ok(())
}

Binnen de motorkap, eprintln! is een macro die writeln! naar stderr omwikkelt, waardoor dingen DRY blijven (Don’t Repeat Yourself - Herhaal Jezelf Niet).

Zie Ook

Voor meer over foutafhandeling en logging: