orion_error/traits/
conversion.rs

1use crate::{core::convert_error, DomainReason, StructError};
2
3pub trait ErrorConv<T, R: DomainReason>: Sized {
4    fn err_conv(self) -> Result<T, StructError<R>>;
5}
6
7pub trait ConvStructError<R: DomainReason>: Sized {
8    fn conv(self) -> StructError<R>;
9}
10
11impl<T, R1, R2> ErrorConv<T, R2> for Result<T, StructError<R1>>
12where
13    R1: DomainReason,
14    R2: DomainReason + From<R1>,
15{
16    fn err_conv(self) -> Result<T, StructError<R2>> {
17        match self {
18            Ok(o) => Ok(o),
19            Err(e) => Err(convert_error::<R1, R2>(e)),
20        }
21    }
22}
23
24impl<R1, R2> ConvStructError<R2> for StructError<R1>
25where
26    R1: DomainReason,
27    R2: DomainReason + From<R1>,
28{
29    fn conv(self) -> StructError<R2> {
30        convert_error::<R1, R2>(self)
31    }
32}