1use std::io;
6use Error;
7use IOErrorEnum;
8
9impl From<IOErrorEnum> for io::ErrorKind {
10 fn from(kind: IOErrorEnum) -> Self {
11 match kind {
12 IOErrorEnum::NotFound => io::ErrorKind::NotFound,
13 IOErrorEnum::Exists => io::ErrorKind::AlreadyExists,
14 IOErrorEnum::InvalidFilename => io::ErrorKind::InvalidInput,
15 IOErrorEnum::InvalidArgument => io::ErrorKind::InvalidInput,
16 IOErrorEnum::PermissionDenied => io::ErrorKind::PermissionDenied,
17 IOErrorEnum::AddressInUse => io::ErrorKind::AddrInUse,
18 IOErrorEnum::TimedOut => io::ErrorKind::TimedOut,
19 IOErrorEnum::WouldBlock => io::ErrorKind::WouldBlock,
20 IOErrorEnum::InvalidData => io::ErrorKind::InvalidData,
21 IOErrorEnum::ConnectionRefused => io::ErrorKind::ConnectionRefused,
22 IOErrorEnum::BrokenPipe => io::ErrorKind::BrokenPipe,
23 IOErrorEnum::NotConnected => io::ErrorKind::NotConnected,
24 _ => io::ErrorKind::Other,
25 }
26 }
27}
28
29pub(crate) fn to_std_io_result<T>(result: Result<T, Error>) -> io::Result<T> {
30 result.map_err(|g_error| match g_error.kind::<IOErrorEnum>() {
31 Some(io_error_enum) => io::Error::new(io_error_enum.into(), g_error),
32 None => io::Error::new(io::ErrorKind::Other, g_error),
33 })
34}