relay_server/managed/
utils.rs1use crate::managed::{Counted, Managed, OutcomeError, Rejected};
2use crate::services::outcome::Outcome;
3
4pub trait ManagedResult<T, E> {
6 fn reject<M>(self, managed: &Managed<M>) -> Result<T, Rejected<E::Error>>
8 where
9 Self: Sized,
10 M: Counted,
11 E: OutcomeError;
12
13 fn with_outcome(self, outcome: Outcome) -> Result<T, (Outcome, E)>
15 where
16 Self: Sized;
17}
18
19impl<T, E> ManagedResult<T, E> for Result<T, E> {
20 fn reject<M>(self, managed: &Managed<M>) -> Result<T, Rejected<E::Error>>
21 where
22 Self: Sized,
23 M: Counted,
24 E: OutcomeError,
25 {
26 self.map_err(|err| managed.reject_err(err))
27 }
28
29 fn with_outcome(self, outcome: Outcome) -> Result<T, (Outcome, E)>
30 where
31 Self: Sized,
32 {
33 self.map_err(|err| (outcome, err))
34 }
35}