@@ -126,15 +126,51 @@ impl<T: crate::Seek + ?Sized> std::io::Seek for ToStd<T> {
126126 }
127127}
128128
129- fn to_std_error < T : core:: fmt:: Debug > ( err : T ) -> std:: io:: Error {
130- let kind = std:: io:: ErrorKind :: Other ;
129+ fn to_std_error < T : crate :: Error > ( err : T ) -> std:: io:: Error {
130+ let kind = match err. kind ( ) {
131+ crate :: ErrorKind :: NotFound => std:: io:: ErrorKind :: NotFound ,
132+ crate :: ErrorKind :: PermissionDenied => std:: io:: ErrorKind :: PermissionDenied ,
133+ crate :: ErrorKind :: ConnectionRefused => std:: io:: ErrorKind :: ConnectionRefused ,
134+ crate :: ErrorKind :: ConnectionReset => std:: io:: ErrorKind :: ConnectionReset ,
135+ crate :: ErrorKind :: ConnectionAborted => std:: io:: ErrorKind :: ConnectionAborted ,
136+ crate :: ErrorKind :: NotConnected => std:: io:: ErrorKind :: NotConnected ,
137+ crate :: ErrorKind :: AddrInUse => std:: io:: ErrorKind :: AddrInUse ,
138+ crate :: ErrorKind :: AddrNotAvailable => std:: io:: ErrorKind :: AddrNotAvailable ,
139+ crate :: ErrorKind :: BrokenPipe => std:: io:: ErrorKind :: BrokenPipe ,
140+ crate :: ErrorKind :: AlreadyExists => std:: io:: ErrorKind :: AlreadyExists ,
141+ crate :: ErrorKind :: InvalidInput => std:: io:: ErrorKind :: InvalidInput ,
142+ crate :: ErrorKind :: InvalidData => std:: io:: ErrorKind :: InvalidData ,
143+ crate :: ErrorKind :: TimedOut => std:: io:: ErrorKind :: TimedOut ,
144+ crate :: ErrorKind :: Interrupted => std:: io:: ErrorKind :: Interrupted ,
145+ crate :: ErrorKind :: Unsupported => std:: io:: ErrorKind :: Unsupported ,
146+ crate :: ErrorKind :: OutOfMemory => std:: io:: ErrorKind :: OutOfMemory ,
147+ _ => std:: io:: ErrorKind :: Other ,
148+ } ;
131149 std:: io:: Error :: new ( kind, format ! ( "{:?}" , err) )
132150}
133151
134152#[ cfg_attr( docsrs, doc( cfg( feature = "std" ) ) ) ]
135153impl crate :: Error for std:: io:: Error {
136154 fn kind ( & self ) -> crate :: ErrorKind {
137- crate :: ErrorKind :: Other
155+ match self . kind ( ) {
156+ std:: io:: ErrorKind :: NotFound => crate :: ErrorKind :: NotFound ,
157+ std:: io:: ErrorKind :: PermissionDenied => crate :: ErrorKind :: PermissionDenied ,
158+ std:: io:: ErrorKind :: ConnectionRefused => crate :: ErrorKind :: ConnectionRefused ,
159+ std:: io:: ErrorKind :: ConnectionReset => crate :: ErrorKind :: ConnectionReset ,
160+ std:: io:: ErrorKind :: ConnectionAborted => crate :: ErrorKind :: ConnectionAborted ,
161+ std:: io:: ErrorKind :: NotConnected => crate :: ErrorKind :: NotConnected ,
162+ std:: io:: ErrorKind :: AddrInUse => crate :: ErrorKind :: AddrInUse ,
163+ std:: io:: ErrorKind :: AddrNotAvailable => crate :: ErrorKind :: AddrNotAvailable ,
164+ std:: io:: ErrorKind :: BrokenPipe => crate :: ErrorKind :: BrokenPipe ,
165+ std:: io:: ErrorKind :: AlreadyExists => crate :: ErrorKind :: AlreadyExists ,
166+ std:: io:: ErrorKind :: InvalidInput => crate :: ErrorKind :: InvalidInput ,
167+ std:: io:: ErrorKind :: InvalidData => crate :: ErrorKind :: InvalidData ,
168+ std:: io:: ErrorKind :: TimedOut => crate :: ErrorKind :: TimedOut ,
169+ std:: io:: ErrorKind :: Interrupted => crate :: ErrorKind :: Interrupted ,
170+ std:: io:: ErrorKind :: Unsupported => crate :: ErrorKind :: Unsupported ,
171+ std:: io:: ErrorKind :: OutOfMemory => crate :: ErrorKind :: OutOfMemory ,
172+ _ => crate :: ErrorKind :: Other ,
173+ }
138174 }
139175}
140176
0 commit comments