io_err/
result_ext.rs

1use crate::err;
2
3/// a result type equivalent to std::io::Result, but implements `Serialize` and `Deserialize`
4pub type Result<T, E = super::Error> = std::result::Result<T, E>;
5
6pub trait ResultExt<T> {
7    fn map_not_found(self) -> Result<T>;
8    fn map_permission_denied(self) -> Result<T>;
9    fn map_conn_refused(self) -> Result<T>;
10    fn map_conn_reset(self) -> Result<T>;
11    fn map_conn_aborted(self) -> Result<T>;
12    fn map_not_connected(self) -> Result<T>;
13    fn map_in_use(self) -> Result<T>;
14    fn map_addr_not_available(self) -> Result<T>;
15    fn map_broken_pipe(self) -> Result<T>;
16    fn map_already_exists(self) -> Result<T>;
17    fn map_would_block(self) -> Result<T>;
18    fn map_invalid_input(self) -> Result<T>;
19    fn map_invalid_data(self) -> Result<T>;
20    fn map_timeout(self) -> Result<T>;
21    fn map_write_zero(self) -> Result<T>;
22    fn map_interrupted(self) -> Result<T>;
23    fn map_unsupported(self) -> Result<T>;
24    fn map_unexpected_eof(self) -> Result<T>;
25    fn map_out_of_memory(self) -> Result<T>;
26    fn map_other(self) -> Result<T>;
27}
28
29impl<T, E: std::error::Error + Send + Sync + 'static> ResultExt<T> for Result<T, E> {
30    #[inline]
31    fn map_not_found(self) -> Result<T> {
32        self.map_err(err!(@not_found))
33    }
34    #[inline]
35    fn map_permission_denied(self) -> Result<T> {
36        self.map_err(err!(@permission_denied))
37    }
38    #[inline]
39    fn map_conn_refused(self) -> Result<T> {
40        self.map_err(err!(@conn_refused))
41    }
42    #[inline]
43    fn map_conn_reset(self) -> Result<T> {
44        self.map_err(err!(@conn_reset))
45    }
46    #[inline]
47    fn map_conn_aborted(self) -> Result<T> {
48        self.map_err(err!(@conn_aborted))
49    }
50    #[inline]
51    fn map_not_connected(self) -> Result<T> {
52        self.map_err(err!(@not_connected))
53    }
54    #[inline]
55    fn map_in_use(self) -> Result<T> {
56        self.map_err(err!(@in_use))
57    }
58    #[inline]
59    fn map_addr_not_available(self) -> Result<T> {
60        self.map_err(err!(@addr_not_available))
61    }
62    #[inline]
63    fn map_broken_pipe(self) -> Result<T> {
64        self.map_err(err!(@broken_pipe))
65    }
66    #[inline]
67    fn map_already_exists(self) -> Result<T> {
68        self.map_err(err!(@already_exists))
69    }
70    #[inline]
71    fn map_would_block(self) -> Result<T> {
72        self.map_err(err!(@would_block))
73    }
74    #[inline]
75    fn map_invalid_input(self) -> Result<T> {
76        self.map_err(err!(@invalid_input))
77    }
78    #[inline]
79    fn map_invalid_data(self) -> Result<T> {
80        self.map_err(err!(@invalid_data))
81    }
82    #[inline]
83    fn map_timeout(self) -> Result<T> {
84        self.map_err(err!(@timeout))
85    }
86    #[inline]
87    fn map_write_zero(self) -> Result<T> {
88        self.map_err(err!(@write_zero))
89    }
90    #[inline]
91    fn map_interrupted(self) -> Result<T> {
92        self.map_err(err!(@interrupted))
93    }
94    #[inline]
95    fn map_unsupported(self) -> Result<T> {
96        self.map_err(err!(@unsupported))
97    }
98    #[inline]
99    fn map_unexpected_eof(self) -> Result<T> {
100        self.map_err(err!(@unexpected_eof))
101    }
102    #[inline]
103    fn map_out_of_memory(self) -> Result<T> {
104        self.map_err(err!(@out_of_memory))
105    }
106    #[inline]
107    fn map_other(self) -> Result<T> {
108        self.map_err(err!(@other))
109    }
110}