gio/
error.rs

1// Copyright 2018, The Gtk-rs Project Developers.
2// See the COPYRIGHT file at the top-level directory of this distribution.
3// Licensed under the MIT license, see the LICENSE file or <http://opensource.org/licenses/MIT>
4
5use 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}