Signed-off-by: Jacob Reger <regerjacob@gmail.com>

---

 rust/src/error.rs | 36 ++++++++++++++++++++++++++++++++++++

 1 file changed, 36 insertions(+)


diff --git a/rust/src/error.rs b/rust/src/error.rs

index ce444e199..f3709516c 100644

--- a/rust/src/error.rs

+++ b/rust/src/error.rs

@@ -46,6 +46,42 @@ pub enum Error {

     Create,

 }


+impl std::fmt::Display for Error {

+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {

+        match self {

+            Error::API(err) => {

+                write!(

+                    f,

+                    "API Error:\n\tOperation: {}\n\tMessage: {}\n\tError Number: {}",

+                    err.operation, err.message, err.errno

+                )

+            }

+            Error::IllegalString(err) => {

+                write!(

+                    f,

+                    "Illegal string Error:\nNull byte found\n\tDetails: {}",

+                    err

+                )

+            }

+            Error::Utf8Error(err) => {

+                write!(

+                    f,

+                    "Utf8 Error:\nFailed to interpret string as utf-8\n\tDetails: {}",

+                    err

+                )

+            }

+            Error::UnixError(err, op) => {

+                write!(f, "Unix Error:\n\tError: {}\n\tOperation: {}", err, op)

+            }

+            Error::Create => {

+                write!(f, "Creation Error:\nFailed to create a guestfs handle")

+            }

+        }

+    }

+}

+

+impl std::error::Error for Error {}

+

 impl convert::From<ffi::NulError> for Error {

     fn from(error: ffi::NulError) -> Self {

         Error::IllegalString(error)

--

2.39.5 (Apple Git-154)