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