orion_error/traits/
conversion.rs1use 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}