Rust:
Escrevendo para o erro padrão
Como fazer:
Rust oferece uma maneira simples de escrever para stderr usando a macro eprintln!
, semelhante a como println!
é usada para stdout. Aqui está um exemplo básico:
fn main() {
eprintln!("Esta é uma mensagem de erro!");
}
Saída de amostra (para erro padrão):
Esta é uma mensagem de erro!
Para mais controle sobre as mensagens de erro, como quando você deseja formatar texto ou tratar resultados de I/O, use a função stderr
do módulo std::io
. Este método fornece um manipulador para o fluxo global de stderr, que você pode então escrever usando métodos como write_all
ou writeln
do trait Write
:
use std::io::{self, Write};
fn main() {
let stderr = io::stderr();
let mut handle = stderr.lock();
writeln!(handle, "Mensagem de erro formatada: {}", 404).expect("Falha ao escrever no stderr");
}
Saída de amostra (para erro padrão):
Mensagem de erro formatada: 404
Se você está trabalhando em ambientes ou aplicações onde depende de bibliotecas para registro de logs ou tratamento de erros, bibliotecas como log
e env_logger
são populares. Embora sejam mais usadas para fins de registro de logs, elas são configuráveis e podem direcionar níveis de log de erro para stderr. Abaixo está um exemplo simples de uso do log
e env_logger
:
Primeiro, adicione as dependências ao seu Cargo.toml
:
[dependencies]
log = "0.4"
env_logger = "0.9"
Em seguida, configure e use o registro de logs na sua aplicação:
fn main() {
env_logger::init();
log::error!("Esta é uma mensagem de erro registrado no stderr");
}
Executando este programa (após configurar o env_logger
com uma variável de ambiente apropriada, por exemplo, RUST_LOG=error
) irá sair a mensagem de erro para stderr, utilizando a infraestrutura de registro de logs.
ERROR: Esta é uma mensagem de erro registrado no stderr