Rust:
Écrire sur l'erreur standard

Comment faire :

Rust propose une manière simple d’écrire sur stderr en utilisant la macro eprintln!, similaire à l’utilisation de println! pour stdout. Voici un exemple basique :

fn main() {
    eprintln!("Ceci est un message d'erreur !");
}

Exemple de sortie (vers l’erreur standard) :

Ceci est un message d'erreur !

Pour plus de contrôle sur les messages d’erreur, comme lorsque vous souhaitez formater du texte ou gérer les résultats d’E/S, utilisez la fonction stderr du module std::io. Cette méthode fournit un accès au flux stderr global, sur lequel vous pouvez ensuite écrire en utilisant des méthodes telles que write_all ou writeln de la caractéristique Write :

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

fn main() {
    let stderr = io::stderr();
    let mut handle = stderr.lock();
    
    writeln!(handle, "Message d'erreur formaté : {}", 404).expect("Échec de l'écriture sur stderr");
}

Exemple de sortie (vers l’erreur standard) :

Message d'erreur formaté : 404

Si vous travaillez dans des environnements ou des applications où vous vous reposez sur des bibliothèques pour la journalisation ou la gestion des erreurs, des bibliothèques telles que log et env_logger sont populaires. Bien qu’elles soient utilisées davantage à des fins de journalisation, elles sont configurables et peuvent diriger les niveaux de journalisation d’erreurs vers stderr. Ci-dessous, un exemple d’utilisation simple avec log et env_logger :

D’abord, ajoutez les dépendances à votre Cargo.toml :

[dependencies]
log = "0.4"
env_logger = "0.9"

Ensuite, configurez et utilisez la journalisation dans votre application :

fn main() {
    env_logger::init();
    log::error!("Ceci est un message d'erreur journalisé sur stderr");
}

Exécuter ce programme (après avoir configuré env_logger avec une variable d’environnement appropriée, par exemple, RUST_LOG=error) sortira le message d’erreur sur stderr, en utilisant l’infrastructure de journalisation.

ERROR: Ceci est un message d'erreur journalisé sur stderr