oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git

simplify error conversions and generalize `WmError::from`

Commit
5d24423177762ae1db9f7a19566b8d7b9f41be91
Parent
96dd81e
Author
emzywastaken <amiamemetoo@gmail.com>
Date
2025-10-13 22:23:45
Moved x11rb error From implementations from WmError to X11Error

Diff

diff --git a/src/window_manager.rs b/src/window_manager.rs
index da1e9b7..35063e2 100644
--- a/src/window_manager.rs
+++ b/src/window_manager.rs
@@ -76,39 +76,39 @@ impl std::fmt::Display for X11Error {
     }
 }
 
-impl From<X11Error> for WmError {
-    fn from(value: X11Error) -> Self {
-        Self::X11(value)
+impl<T: Into<X11Error>> From<T> for WmError {
+    fn from(value: T) -> Self {
+        Self::X11(value.into())
     }
 }
 
-impl From<x11rb::errors::ConnectError> for WmError {
+impl From<anyhow::Error> for WmError {
+    fn from(value: anyhow::Error) -> Self {
+        Self::Anyhow(value)
+    }
+}
+
+impl From<x11rb::errors::ConnectError> for X11Error {
     fn from(value: x11rb::errors::ConnectError) -> Self {
-        Self::X11(X11Error::ConnectError(value))
+        X11Error::ConnectError(value)
     }
 }
 
-impl From<x11rb::errors::ConnectionError> for WmError {
+impl From<x11rb::errors::ConnectionError> for X11Error {
     fn from(value: x11rb::errors::ConnectionError) -> Self {
-        Self::X11(X11Error::ConnectionError(value))
+        X11Error::ConnectionError(value)
     }
 }
 
-impl From<x11rb::errors::ReplyError> for WmError {
+impl From<x11rb::errors::ReplyError> for X11Error {
     fn from(value: x11rb::errors::ReplyError) -> Self {
-        Self::X11(X11Error::ReplyError(value))
+        X11Error::ReplyError(value)
     }
 }
 
-impl From<x11rb::errors::ReplyOrIdError> for WmError {
+impl From<x11rb::errors::ReplyOrIdError> for X11Error {
     fn from(value: x11rb::errors::ReplyOrIdError) -> Self {
-        Self::X11(X11Error::ReplyOrIdError(value))
-    }
-}
-
-impl From<anyhow::Error> for WmError {
-    fn from(value: anyhow::Error) -> Self {
-        Self::Anyhow(value)
+        X11Error::ReplyOrIdError(value)
     }
 }