orion_error/traits/
owenance.rs1use crate::{
2 core::{DomainFrom, DomainReason, UvsReason},
3 StructError, UvsBizFrom, UvsDataFrom, UvsResFrom, UvsRuleFrom, UvsSysFrom,
4};
5
6use std::fmt::Display;
9pub trait ErrorOwe<T, R>
10where
11 R: DomainReason,
12{
13 fn owe(self, reason: R) -> Result<T, StructError<R>>;
14 fn owe_logic(self) -> Result<T, StructError<R>>;
15 fn owe_biz(self) -> Result<T, StructError<R>>;
16 fn owe_rule(self) -> Result<T, StructError<R>>;
17 fn owe_data(self) -> Result<T, StructError<R>>;
18 fn owe_conf(self) -> Result<T, StructError<R>>;
19 fn owe_res(self) -> Result<T, StructError<R>>;
20 fn owe_sys(self) -> Result<T, StructError<R>>;
21}
22
23impl<T, E, R> ErrorOwe<T, R> for Result<T, E>
24where
25 E: Display,
26 R: DomainReason,
27{
28 fn owe(self, reason: R) -> Result<T, StructError<R>> {
29 match self {
30 Ok(v) => Ok(v),
31 Err(e) => Err(StructError::from_domain(reason).with_detail(e.to_string())),
32 }
33 }
34
35 fn owe_logic(self) -> Result<T, StructError<R>> {
36 self.map_err(|e| StructError::from_uvs_rs(UvsReason::from_sys(e.to_string())))
37 }
38 fn owe_biz(self) -> Result<T, StructError<R>> {
39 self.map_err(|e| StructError::from_uvs_rs(UvsReason::from_biz(e.to_string())))
40 }
41 fn owe_rule(self) -> Result<T, StructError<R>> {
42 self.map_err(|e| StructError::from_uvs_rs(UvsReason::from_rule(e.to_string())))
43 }
44 fn owe_data(self) -> Result<T, StructError<R>> {
45 self.map_err(|e| StructError::from_uvs_rs(UvsReason::from_data(e.to_string(), None)))
46 }
47 fn owe_conf(self) -> Result<T, StructError<R>> {
48 self.map_err(|e| StructError::from_uvs_rs(UvsReason::core_conf(e.to_string())))
49 }
50 fn owe_res(self) -> Result<T, StructError<R>> {
51 self.map_err(|e| StructError::from_uvs_rs(UvsReason::from_res(e.to_string())))
52 }
53 fn owe_sys(self) -> Result<T, StructError<R>> {
54 self.map_err(|e| StructError::from_uvs_rs(UvsReason::from_sys(e.to_string())))
55 }
56}