ferrous_serialport/posix/
error.rs1use std::io;
2
3use crate::{Error, ErrorKind};
4
5#[cfg(all(target_os = "linux", not(target_env = "musl"), feature = "libudev"))]
6impl From<libudev::Error> for Error {
7 fn from(e: libudev::Error) -> Error {
8 let description = e.description().to_string();
9 match e.kind() {
10 libudev::ErrorKind::NoMem => Error::new(ErrorKind::Unknown, description),
11 libudev::ErrorKind::InvalidInput => Error::new(ErrorKind::InvalidInput, description),
12 libudev::ErrorKind::Io(a) => Error::new(ErrorKind::Io(a), description),
13 }
14 }
15}
16
17impl From<nix::Error> for Error {
18 fn from(e: nix::Error) -> Error {
19 match e {
20 nix::Error::InvalidPath | nix::Error::InvalidUtf8 => {
21 Error::new(ErrorKind::InvalidInput, "Invalid input")
22 }
23 nix::Error::UnsupportedOperation => Error::new(ErrorKind::Unknown, "Unknown error"),
24 nix::Error::Sys(e @ nix::errno::Errno::ETIMEDOUT) => {
25 Error::new(ErrorKind::Io(io::ErrorKind::TimedOut), e.desc())
26 }
27 nix::Error::Sys(e @ nix::errno::Errno::ECONNABORTED) => {
28 Error::new(ErrorKind::Io(io::ErrorKind::ConnectionAborted), e.desc())
29 }
30 nix::Error::Sys(e @ nix::errno::Errno::ECONNRESET) => {
31 Error::new(ErrorKind::Io(io::ErrorKind::ConnectionReset), e.desc())
32 }
33 nix::Error::Sys(e @ nix::errno::Errno::ECONNREFUSED) => {
34 Error::new(ErrorKind::Io(io::ErrorKind::ConnectionRefused), e.desc())
35 }
36 nix::Error::Sys(e @ nix::errno::Errno::ENOTCONN) => {
37 Error::new(ErrorKind::Io(io::ErrorKind::NotConnected), e.desc())
38 }
39 nix::Error::Sys(e @ nix::errno::Errno::EADDRINUSE) => {
40 Error::new(ErrorKind::Io(io::ErrorKind::AddrInUse), e.desc())
41 }
42 nix::Error::Sys(e @ nix::errno::Errno::EADDRNOTAVAIL) => {
43 Error::new(ErrorKind::Io(io::ErrorKind::AddrNotAvailable), e.desc())
44 }
45 nix::Error::Sys(e @ nix::errno::Errno::EAGAIN) => {
46 Error::new(ErrorKind::Io(io::ErrorKind::WouldBlock), e.desc())
47 }
48 nix::Error::Sys(e @ nix::errno::Errno::EINTR) => {
49 Error::new(ErrorKind::Io(io::ErrorKind::Interrupted), e.desc())
50 }
51 nix::Error::Sys(e @ nix::errno::Errno::EACCES) => {
52 Error::new(ErrorKind::Io(io::ErrorKind::PermissionDenied), e.desc())
53 }
54 nix::Error::Sys(e @ nix::errno::Errno::ENOENT) => {
55 Error::new(ErrorKind::Io(io::ErrorKind::NotFound), e.desc())
56 }
57 nix::Error::Sys(e) => Error::new(ErrorKind::Unknown, e.desc()),
58 }
59 }
60}