pub trait LoggableError<T>: Sized {
    fn print_error<F: Fn(&str)>(self, fun: F) -> Self;

    fn to_log(self) -> Self { ... }
    fn to_stderr(self) -> Self { ... }
    fn to_stdout(self) -> Self { ... }
Expand description

Helper trait to easily log error types.

The print_error function takes a closure which takes a &str and fares with it as necessary to log the error to some usable location. For convenience, logging to stdout, stderr and log::error! is already implemented.

Note that the trait functions pass the error through unmodified, so they can be chained with the usual handling of std::result::Result types.

Developer notes

We can dump the different impls once #31844 is stabilized.

Required Methods

Gives a formatted error message derived from self to the closure fun for printing/logging as appropriate.

use anyhow;
use crate::LoggableError;

let my_err: anyhow::Result<&str> = Err(anyhow::anyhow!("Test error"));
    .print_error(|msg| println!("{msg}"))

Provided Methods

Convenienve function, calls print_error with the closure |msg| eprintln!("{}", msg).

Convenienve function, calls print_error with the closure |msg| println!("{}", msg).

Implementations on Foreign Types

Generic implementation for all errors that are Debug.