From cc4d14fe69486735f303dea7723fecf331d0f6d7 Mon Sep 17 00:00:00 2001 From: Kodi Craft Date: Thu, 20 Jun 2024 11:52:36 +0200 Subject: [PATCH] Derive serde methods on message enums --- Cargo.lock | 21 +++++++++++++++++++++ Cargo.toml | 4 +++- src/lib.rs | 2 ++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 0a3abe4..838cb5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -50,6 +50,7 @@ version = "0.2.0" dependencies = [ "proc-macro2", "quote", + "serde", "syn", "tokio", ] @@ -120,6 +121,26 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "serde" +version = "1.0.203" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.203" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "syn" version = "2.0.66" diff --git a/Cargo.toml b/Cargo.toml index 583d1ce..d4b49a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,10 +3,12 @@ name = "eagle" version = "0.2.0" edition = "2021" license = "AGPL-3.0" +publish = ["gitea"] [dependencies] proc-macro2 = "1.0.85" quote = "1.0.36" +serde = { version = "1.0.203", features = ["serde_derive"] } syn = "2.0.66" tokio = { version = "1.38.0", features = ["sync"] } @@ -15,4 +17,4 @@ proc-macro = true [[test]] name = "tests" -path = "tests/mod.rs" \ No newline at end of file +path = "tests/mod.rs" diff --git a/src/lib.rs b/src/lib.rs index fa16b06..662ec26 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -92,6 +92,7 @@ pub fn derive_protocol(input: TokenStream) -> TokenStream { }; let client_enum_name = format_ident!("{}Question", name); let client_enum = quote! { + #[derive(serde::Serialize, serde::Deserialize)] #vis enum #client_enum_name { #(#client_enum), * } @@ -99,6 +100,7 @@ pub fn derive_protocol(input: TokenStream) -> TokenStream { // Create an enum to represent the queries the client has sent let query_enum_name = format_ident!("{}Query", name); let query_enum = quote! { + #[derive(serde::Serialize, serde::Deserialize)] #vis enum #query_enum_name { #(#query_enum), * }