@@ -89,31 +89,6 @@ pub enum ErrorKind {
89
89
UnexpectedEof ,
90
90
}
91
91
92
- impl ErrorKind {
93
- pub ( crate ) fn as_str ( & self ) -> & ' static str {
94
- match * self {
95
- ErrorKind :: NotFound => "entity not found" ,
96
- ErrorKind :: PermissionDenied => "permission denied" ,
97
- ErrorKind :: ConnectionRefused => "connection refused" ,
98
- ErrorKind :: ConnectionReset => "connection reset" ,
99
- ErrorKind :: ConnectionAborted => "connection aborted" ,
100
- ErrorKind :: NotConnected => "not connected" ,
101
- ErrorKind :: AddrInUse => "address in use" ,
102
- ErrorKind :: AddrNotAvailable => "address not available" ,
103
- ErrorKind :: BrokenPipe => "broken pipe" ,
104
- ErrorKind :: AlreadyExists => "entity already exists" ,
105
- ErrorKind :: WouldBlock => "operation would block" ,
106
- ErrorKind :: InvalidInput => "invalid input parameter" ,
107
- ErrorKind :: InvalidData => "invalid data" ,
108
- ErrorKind :: TimedOut => "timed out" ,
109
- ErrorKind :: WriteZero => "write zero" ,
110
- ErrorKind :: Interrupted => "operation interrupted" ,
111
- ErrorKind :: Other => "other os error" ,
112
- ErrorKind :: UnexpectedEof => "unexpected end of file" ,
113
- }
114
- }
115
- }
116
-
117
92
impl From < io:: ErrorKind > for ErrorKind {
118
93
fn from ( kind : io:: ErrorKind ) -> Self {
119
94
match kind {
@@ -140,10 +115,35 @@ impl From<io::ErrorKind> for ErrorKind {
140
115
}
141
116
}
142
117
118
+ impl From < ErrorKind > for io:: Error {
119
+ fn from ( kind : ErrorKind ) -> Self {
120
+ let kind = match kind {
121
+ ErrorKind :: NotFound => io:: ErrorKind :: NotFound ,
122
+ ErrorKind :: PermissionDenied => io:: ErrorKind :: PermissionDenied ,
123
+ ErrorKind :: ConnectionRefused => io:: ErrorKind :: ConnectionRefused ,
124
+ ErrorKind :: ConnectionReset => io:: ErrorKind :: ConnectionReset ,
125
+ ErrorKind :: ConnectionAborted => io:: ErrorKind :: ConnectionAborted ,
126
+ ErrorKind :: NotConnected => io:: ErrorKind :: NotConnected ,
127
+ ErrorKind :: AddrInUse => io:: ErrorKind :: AddrInUse ,
128
+ ErrorKind :: AddrNotAvailable => io:: ErrorKind :: AddrNotAvailable ,
129
+ ErrorKind :: BrokenPipe => io:: ErrorKind :: BrokenPipe ,
130
+ ErrorKind :: AlreadyExists => io:: ErrorKind :: AlreadyExists ,
131
+ ErrorKind :: WouldBlock => io:: ErrorKind :: WouldBlock ,
132
+ ErrorKind :: InvalidInput => io:: ErrorKind :: InvalidInput ,
133
+ ErrorKind :: InvalidData => io:: ErrorKind :: InvalidData ,
134
+ ErrorKind :: TimedOut => io:: ErrorKind :: TimedOut ,
135
+ ErrorKind :: WriteZero => io:: ErrorKind :: WriteZero ,
136
+ ErrorKind :: Interrupted => io:: ErrorKind :: Interrupted ,
137
+ ErrorKind :: UnexpectedEof => io:: ErrorKind :: UnexpectedEof ,
138
+ ErrorKind :: Other => io:: ErrorKind :: Other ,
139
+ } ;
140
+ io:: Error :: from ( kind)
141
+ }
142
+ }
143
+
143
144
/// Internal representation of the error state.
144
145
#[ derive( Debug ) ]
145
146
enum Repr {
146
- Simple ,
147
147
Io ( io:: Error ) ,
148
148
Custom ( anyhow:: Error ) ,
149
149
}
@@ -223,7 +223,7 @@ impl Error {
223
223
#[ cfg( backtrace) ]
224
224
pub fn backtrace ( & self ) -> & std:: backtrace:: Backtrace {
225
225
match self {
226
- Repr :: Simple => std:: backtrace:: Backtrace :: capture ( ) ,
226
+ Repr :: Io => std:: backtrace:: Backtrace :: capture ( ) ,
227
227
Repr :: Custom ( err) => err. backtrace ( ) ,
228
228
}
229
229
}
@@ -266,7 +266,6 @@ impl Error {
266
266
impl Display for Error {
267
267
fn fmt ( & self , formatter : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
268
268
match & self . repr {
269
- Repr :: Simple => write ! ( formatter, "{}" , self . kind. as_str( ) ) ,
270
269
Repr :: Io ( io) => write ! ( formatter, "{}" , io) ,
271
270
Repr :: Custom ( err) => write ! ( formatter, "{}" , err) ,
272
271
}
@@ -276,7 +275,6 @@ impl Display for Error {
276
275
impl Debug for Error {
277
276
fn fmt ( & self , formatter : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
278
277
match & self . repr {
279
- Repr :: Simple => write ! ( formatter, "{}" , self . kind. as_str( ) ) ,
280
278
Repr :: Io ( io) => write ! ( formatter, "{}" , io) ,
281
279
Repr :: Custom ( err) => write ! ( formatter, "{}" , err) ,
282
280
}
@@ -299,8 +297,8 @@ where
299
297
impl From < ErrorKind > for Error {
300
298
fn from ( kind : ErrorKind ) -> Self {
301
299
Self {
302
- kind,
303
- repr : Repr :: Simple ,
300
+ kind : kind . clone ( ) ,
301
+ repr : Repr :: Io ( kind . into ( ) ) ,
304
302
status : StatusCode :: InternalServerError ,
305
303
}
306
304
}
@@ -309,7 +307,6 @@ impl From<ErrorKind> for Error {
309
307
impl AsRef < dyn StdError + Send + Sync > for Error {
310
308
fn as_ref ( & self ) -> & ( dyn StdError + Send + Sync + ' static ) {
311
309
match & self . repr {
312
- Repr :: Simple => todo ! ( ) ,
313
310
Repr :: Io ( ref io) => io,
314
311
Repr :: Custom ( ref err) => err. as_ref ( ) ,
315
312
}
@@ -319,7 +316,6 @@ impl AsRef<dyn StdError + Send + Sync> for Error {
319
316
impl AsRef < dyn StdError > for Error {
320
317
fn as_ref ( & self ) -> & ( dyn StdError + ' static ) {
321
318
match & self . repr {
322
- Repr :: Simple => todo ! ( ) ,
323
319
Repr :: Io ( ref io) => io,
324
320
Repr :: Custom ( ref err) => err. as_ref ( ) ,
325
321
}
@@ -329,7 +325,6 @@ impl AsRef<dyn StdError> for Error {
329
325
impl From < Error > for Box < dyn StdError + Send + Sync + ' static > {
330
326
fn from ( error : Error ) -> Self {
331
327
match error. repr {
332
- Repr :: Simple => todo ! ( ) ,
333
328
Repr :: Io ( io) => io. into ( ) ,
334
329
Repr :: Custom ( err) => err. into ( ) ,
335
330
}
0 commit comments