miden_node_utils/
lib.rs

1pub mod config;
2pub mod crypto;
3pub mod formatting;
4pub mod grpc;
5pub mod logging;
6pub mod tracing;
7pub mod version;
8
9pub trait ErrorReport: std::error::Error {
10    fn as_report(&self) -> String {
11        use std::fmt::Write;
12        let mut report = self.to_string();
13
14        // SAFETY: write! is suggested by clippy, and is trivially safe usage.
15        std::iter::successors(self.source(), |child| child.source())
16            .for_each(|source| write!(report, "\nCaused by: {source}").unwrap());
17
18        report
19    }
20}
21
22impl<T: std::error::Error> ErrorReport for T {}