hermes_error/traits/
wrap.rs1use cgp::core::error::{CanRaiseError, HasErrorType};
2
3pub struct WrapError<Detail, Error> {
4 pub detail: Detail,
5 pub error: Error,
6}
7
8pub trait CanWrapError<Detail>: HasErrorType {
9 fn wrap_error(detail: Detail, error: Self::Error) -> Self::Error;
10}
11
12impl<Context, Detail, Error> CanWrapError<Detail> for Context
13where
14 Context: HasErrorType<Error = Error> + CanRaiseError<WrapError<Detail, Error>>,
15{
16 fn wrap_error(detail: Detail, error: Self::Error) -> Self::Error {
17 Context::raise_error(WrapError { detail, error })
18 }
19}