Skip to main content

hermes_error/traits/
wrap.rs

1use 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}