standard_error/extras/fromerrs/
stdio.rs

1use crate::{Interpolate, StandardError};
2use std::io;
3
4impl From<std::io::Error> for StandardError {
5    fn from(error: io::Error) -> Self {
6        let code = match error.kind() {
7            io::ErrorKind::NotFound => "ER-IO-NOTFOUND",
8            io::ErrorKind::PermissionDenied => "ER-IO-PERMISSION",
9            io::ErrorKind::ConnectionRefused => "ER-IO-CONNECTION",
10            io::ErrorKind::ConnectionReset => "ER-IO-RESET",
11            io::ErrorKind::ConnectionAborted => "ER-IO-ABORTED",
12            io::ErrorKind::NotConnected => "ER-IO-NOTCONNECTED",
13            io::ErrorKind::AddrInUse => "ER-IO-ADDRINUSE",
14            io::ErrorKind::AddrNotAvailable => "ER-IO-ADDRNOTAVAILABLE",
15            io::ErrorKind::BrokenPipe => "ER-IO-BROKENPIPE",
16            io::ErrorKind::AlreadyExists => "ER-IO-ALREADYEXISTS",
17            io::ErrorKind::WouldBlock => "ER-IO-WOULDBLOCK",
18            io::ErrorKind::TimedOut => "ER-IO-TIMEDOUT",
19            io::ErrorKind::Interrupted => "ER-IO-INTERRUPTED",
20            io::ErrorKind::UnexpectedEof => "ER-IO-UNEXPECTEDEOF",
21            _ => "ER-IO-UNKNOWN",
22        };
23
24        StandardError::new(code).interpolate_err(error.to_string())
25    }
26}