From b9653e689bd1f4d94e670315c7a4c4a0cac1785e Mon Sep 17 00:00:00 2001
From: 4lDO2 <4lDO2@protonmail.com>
Date: Sat, 7 Sep 2024 12:48:38 +0200
Subject: [PATCH] Implement From<Errno> for io::Error.

---
 src/error.rs | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/error.rs b/src/error.rs
index f99feac7..9b3051ed 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -7,17 +7,26 @@ pub struct Errno(pub c_int);
 
 #[cfg(target_os = "redox")]
 impl From<syscall::Error> for Errno {
+    #[inline]
     fn from(value: syscall::Error) -> Self {
         Errno(value.errno)
     }
 }
 #[cfg(target_os = "redox")]
 impl From<Errno> for syscall::Error {
+    #[inline]
     fn from(value: Errno) -> Self {
         syscall::Error::new(value.0)
     }
 }
 
+impl From<Errno> for crate::io::Error {
+    #[inline]
+    fn from(Errno(errno): Errno) -> Self {
+        Self::from_raw_os_error(errno)
+    }
+}
+
 pub trait ResultExt<T> {
     fn or_minus_one_errno(self) -> T;
 }
@@ -25,10 +34,10 @@ impl<T: From<i8>> ResultExt<T> for Result<T, Errno> {
     fn or_minus_one_errno(self) -> T {
         match self {
             Self::Ok(v) => v,
-            Self::Err(Errno(errno)) => unsafe {
+            Self::Err(Errno(errno)) => {
                 crate::platform::ERRNO.set(errno);
                 T::from(-1)
-            },
+            }
         }
     }
 }
-- 
GitLab