cgp_error_std/impls/
debug_error.rs1use alloc::boxed::Box;
2use alloc::format;
3use core::fmt::Debug;
4
5use cgp_core::error::{ErrorRaiser, ErrorWrapper, HasErrorType};
6
7use crate::types::{Error, StringError};
8use crate::WrapError;
9
10pub struct DebugBoxedStdError;
11
12impl<Context, E> ErrorRaiser<Context, E> for DebugBoxedStdError
13where
14 Context: HasErrorType<Error = Error>,
15 E: Debug,
16{
17 fn raise_error(e: E) -> Error {
18 Box::new(StringError::from(format!("{e:?}")))
19 }
20}
21
22impl<Context, Detail> ErrorWrapper<Context, Detail> for DebugBoxedStdError
23where
24 Context: HasErrorType<Error = Error>,
25 Detail: Debug,
26{
27 fn wrap_error(error: Error, detail: Detail) -> Error {
28 Box::new(WrapError {
29 detail: format!("{detail:?}"),
30 source: error,
31 })
32 }
33}