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