standard_error/extras/fromerrs/
stdio.rs1use 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}