Attempt to change the way errors are created
This commit is contained in:
		
							parent
							
								
									ef1faf5bd9
								
							
						
					
					
						commit
						a5c975d113
					
				
							
								
								
									
										21
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										21
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -306,6 +306,7 @@ dependencies = [ | ||||
|  "ron", | ||||
|  "serde", | ||||
|  "syn", | ||||
|  "thiserror", | ||||
|  "tokio", | ||||
|  "tokio-test", | ||||
| ] | ||||
| @ -973,6 +974,26 @@ version = "0.1.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thiserror" | ||||
| version = "1.0.61" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" | ||||
| dependencies = [ | ||||
|  "thiserror-impl", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thiserror-impl" | ||||
| version = "1.0.61" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thread_local" | ||||
| version = "1.1.8" | ||||
|  | ||||
| @ -29,6 +29,7 @@ tokio-test = "0.4.4" | ||||
| env_logger = { version = "0.11.3" } | ||||
| log = { version = "0.4.21" } | ||||
| console-subscriber = "0.3.0" | ||||
| thiserror = "1.0.61" | ||||
| 
 | ||||
| [lib] | ||||
| proc-macro = true | ||||
|  | ||||
							
								
								
									
										32
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -352,39 +352,13 @@ fn derive_protocol(input: proc_macro2::TokenStream) -> proc_macro2::TokenStream | ||||
| 
 | ||||
|     // Create an error and result type for sending messages
 | ||||
|     let error_enum = quote! { | ||||
|         #[derive(::std::fmt::Debug)] | ||||
|         #[derive(::std::fmt::Debug, ::std::clone::Clone, ::std::fmt::Display, ::thiserror::Error)] | ||||
|         #vis enum #error_enum_name { | ||||
|             #[error("Failed to send query: {0}")] | ||||
|             SendError(::tokio::sync::mpsc::error::SendError<(u64, #question_enum_name)>), | ||||
|             #[error("Connection to sender thread closed")] | ||||
|             Closed, | ||||
|         } | ||||
|         impl ::std::fmt::Display for #error_enum_name { | ||||
|             fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { | ||||
|                 match self { | ||||
|                     #error_enum_name::SendError(e) => write!(f, "Failed to send query: {}", e), | ||||
|                     #error_enum_name::Closed => write!(f, "Connection closed"), | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         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
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user