stefans_utils/
try_map_into.rs1pub trait TryMapInto<T> {
2 type Error;
3
4 fn try_map_into(self) -> Result<T, Self::Error>;
5}
6
7impl<A: TryInto<B>, B> TryMapInto<Option<B>> for Option<A> {
8 type Error = A::Error;
9
10 fn try_map_into(self) -> Result<Option<B>, Self::Error> {
11 self.map(A::try_into).transpose()
12 }
13}
14
15impl<OkA: TryInto<OkB>, OkB, ErrA: Into<ErrB>, ErrB> TryMapInto<Result<OkB, ErrB>>
16 for Result<OkA, ErrA>
17{
18 type Error = OkA::Error;
19
20 fn try_map_into(self) -> Result<Result<OkB, ErrB>, Self::Error> {
21 match self {
22 Ok(a) => a.try_into().map(Ok),
23 Err(err_a) => Ok(Err(err_a.into())),
24 }
25 }
26}