hermit/
io.rs

1use embedded_io::{Error, ErrorKind};
2
3use crate::errno::Errno;
4
5pub type Result<T> = core::result::Result<T, Errno>;
6
7impl From<Errno> for ErrorKind {
8	fn from(value: Errno) -> Self {
9		match value {
10			Errno::Noent => ErrorKind::NotFound,
11			Errno::Acces | Errno::Perm => ErrorKind::PermissionDenied,
12			Errno::Connrefused => ErrorKind::ConnectionRefused,
13			Errno::Connreset => ErrorKind::ConnectionReset,
14			Errno::Connaborted => ErrorKind::ConnectionAborted,
15			Errno::Notconn => ErrorKind::NotConnected,
16			Errno::Addrinuse => ErrorKind::AddrInUse,
17			Errno::Addrnotavail => ErrorKind::AddrNotAvailable,
18			Errno::Pipe => ErrorKind::BrokenPipe,
19			Errno::Exist => ErrorKind::AlreadyExists,
20			Errno::Inval => ErrorKind::InvalidInput,
21			Errno::Timedout => ErrorKind::TimedOut,
22			Errno::Intr => ErrorKind::Interrupted,
23			Errno::Opnotsupp => ErrorKind::Unsupported,
24			Errno::Nomem => ErrorKind::OutOfMemory,
25			_ => ErrorKind::Other,
26		}
27	}
28}
29
30impl Error for Errno {
31	fn kind(&self) -> ErrorKind {
32		(*self).into()
33	}
34}