From 267b741ac43af722292a8c81454b55daf5c83c69 Mon Sep 17 00:00:00 2001 From: Kodi Craft Date: Tue, 25 Jun 2024 00:03:29 +0200 Subject: [PATCH] implement std::error::Error for the error type --- src/lib.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 9cc75e1..d016c9d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -348,6 +348,26 @@ fn derive_protocol(input: proc_macro2::TokenStream) -> proc_macro2::TokenStream } } } + impl ::std::error::Error for #error_enum_name { + fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> { + match self { + #error_enum_name::SendError(e) => ::std::option::Option::Some(e), + #error_enum_name::Closed => ::std::option::Option::None, + } + } + fn description(&self) -> &str { + match self { + #error_enum_name::SendError(_) => "Failed to send query", + #error_enum_name::Closed => "Connection closed", + } + } + fn cause(&self) -> ::std::option::Option<&dyn ::std::error::Error> { + match self { + #error_enum_name::SendError(e) => ::std::option::Option::Some(e), + #error_enum_name::Closed => ::std::option::Option::None, + } + } + } }; // Create enums for the types of messages the server and client will use