avina_wire/
error.rs

1use serde::{Deserialize, Serialize};
2#[cfg(feature = "tabled")]
3use tabled::Tabled;
4use thiserror::Error;
5
6#[cfg_attr(feature = "tabled", derive(Tabled))]
7#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
8pub struct ErrorResponse {
9    pub detail: String,
10}
11
12#[derive(Error, Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
13#[error("{0}")]
14pub struct ConversionError(pub String);
15
16pub fn error_chain_fmt(
17    e: &impl std::error::Error,
18    f: &mut std::fmt::Formatter<'_>,
19) -> std::fmt::Result {
20    writeln!(f, "{e}")?;
21    let mut current = e.source();
22    while let Some(cause) = current {
23        writeln!(f, "caused by: {cause}")?;
24        current = cause.source();
25    }
26    Ok(())
27}