extern crate alloc;
use alloc::borrow::Cow;
#[cfg(feature = "backtrace")]
use std::backtrace::Backtrace;
use crate::gerr::{Config, ErrorLocation, GErr, Source};
pub struct GErrView<'a, C: Config, D> {
pub id: Option<&'a C::Id>,
pub message: &'a str,
pub code: Option<&'a str>,
pub data: Option<&'a D>,
pub tags: Option<&'a [Cow<'static, str>]>,
pub sources: Option<&'a [Source]>,
pub help: Option<&'a str>,
pub location: &'a ErrorLocation,
#[cfg(feature = "backtrace")]
pub backtrace: &'a Backtrace,
}
impl<'a, C: Config, D> From<&'a GErr<C, D>> for GErrView<'a, C, D> {
fn from(err: &'a GErr<C, D>) -> Self {
Self {
id: err.id(),
message: err.message(),
code: err.code(),
data: err.data(),
tags: err.tags(),
sources: err.sources(),
help: err.help(),
location: err.location(),
#[cfg(feature = "backtrace")]
backtrace: err.backtrace(),
}
}
}