1 unstable release

0.1.1 Sep 28, 2021
0.1.0 Sep 28, 2021

#1409 in Rust patterns

Download history 185/week @ 2023-06-09 404/week @ 2023-06-16 228/week @ 2023-06-23 199/week @ 2023-06-30 567/week @ 2023-07-07 164/week @ 2023-07-14 273/week @ 2023-07-21 136/week @ 2023-07-28 141/week @ 2023-08-04 131/week @ 2023-08-11 200/week @ 2023-08-18 328/week @ 2023-08-25 199/week @ 2023-09-01 131/week @ 2023-09-08 260/week @ 2023-09-15 140/week @ 2023-09-22

778 downloads per month
Used in 10 crates (3 directly)

MIT license



API Docs Crate Page Top Language

fmterr (pronounced fumpterr obviously!) is a tiny error reporting tool for Rust! If you have an error with a chain of sources and you want to display it to the user without bringing in something like anyhow, fmterr is for you! Just run fmt_err(&err) and you'll get a string error message that displays the source chain nicely for end users.


You can use fmterr to format any error that implements std::error::Error (basically any error worth its salt) like so:

use fmterr::fmt_err;

// Imagine this is a super-complex error with a nested source
let err = std::io::Error::from(std::io::ErrorKind::NotFound);

let err_str = fmt_err(&err);
println!("{}", err_str);

That'll produce the following if you use a complex error:

Error: first error message

Caused by:
    second error message
    Caused by:
        third error message

Or just this if you use something without a source (with an io::ErrorKind::NotFound):

Error: entity not found

fmterr vs anyhow

Most library applications will use thiserror or the like to create their errors, and then they'll sometimes need a formatting tool. If you use anyhow as a formatting tool, you're basically using a sledgehammer to fix a dent, you just don't need it all! That said, anyhow is fantastic for applications where the rest of its features are needed.


We appreciate all kinds of contributions, check out our contributing guidelines for more information! Also, please be sure to follow our code of conduct.



No runtime deps