1 // Take a look at the license at the top of the repository in the LICENSE file.
2 
3 use crate::IOErrorEnum;
4 use std::io;
5 
6 impl From<IOErrorEnum> for io::ErrorKind {
from(kind: IOErrorEnum) -> Self7     fn from(kind: IOErrorEnum) -> Self {
8         match kind {
9             IOErrorEnum::NotFound => Self::NotFound,
10             IOErrorEnum::Exists => Self::AlreadyExists,
11             IOErrorEnum::InvalidFilename => Self::InvalidInput,
12             IOErrorEnum::InvalidArgument => Self::InvalidInput,
13             IOErrorEnum::PermissionDenied => Self::PermissionDenied,
14             IOErrorEnum::AddressInUse => Self::AddrInUse,
15             IOErrorEnum::TimedOut => Self::TimedOut,
16             IOErrorEnum::WouldBlock => Self::WouldBlock,
17             IOErrorEnum::InvalidData => Self::InvalidData,
18             IOErrorEnum::ConnectionRefused => Self::ConnectionRefused,
19             IOErrorEnum::BrokenPipe => Self::BrokenPipe,
20             IOErrorEnum::NotConnected => Self::NotConnected,
21             _ => Self::Other,
22         }
23     }
24 }
25 
to_std_io_result<T>(result: Result<T, glib::Error>) -> io::Result<T>26 pub(crate) fn to_std_io_result<T>(result: Result<T, glib::Error>) -> io::Result<T> {
27     result.map_err(|g_error| match g_error.kind::<IOErrorEnum>() {
28         Some(io_error_enum) => io::Error::new(io_error_enum.into(), g_error),
29         None => io::Error::new(io::ErrorKind::Other, g_error),
30     })
31 }
32