orion_error/traits/
conversion.rs1use crate::{core::convert_error, DomainReason, StructError, StructReason};
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,
15 StructReason<R2>: From<R1>,
16{
17 fn err_conv(self) -> Result<T, StructError<R2>> {
18 match self {
19 Ok(o) => Ok(o),
20 Err(e) => Err(convert_error::<R1, R2>(e)),
21 }
22 }
23}
24
25impl<R1, R2> ConvStructError<R2> for StructError<R1>
26where
27 R1: DomainReason,
28 R2: DomainReason,
29 StructReason<R2>: From<R1>,
30{
31 fn conv(self) -> StructError<R2> {
32 convert_error::<R1, R2>(self)
33 }
34}