From 2f68d495c1fd6af558d371d3aa57e16272725e96 Mon Sep 17 00:00:00 2001 From: Vincent Herlemont Date: Sun, 29 Oct 2023 09:43:41 +0100 Subject: [PATCH] feat: bincode_1_3 by default --- .../native_model/native_model_macro/src/lib.rs | 13 ++++++++++++- .../src/method/decode_body.rs | 1 - .../tests/example/default_codec/default.rs | 18 ++++++++++++++++++ .../tests/example/default_codec/mod.rs | 1 + .../example/default_codec/postcard_1_0.rs | 3 ++- 5 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 libraries/native_model/tests_crate/tests/example/default_codec/default.rs diff --git a/libraries/native_model/native_model_macro/src/lib.rs b/libraries/native_model/native_model_macro/src/lib.rs index 2dc20be2..e11c9f10 100644 --- a/libraries/native_model/native_model_macro/src/lib.rs +++ b/libraries/native_model/native_model_macro/src/lib.rs @@ -16,7 +16,6 @@ use syn::token; use syn::{parse_macro_input, DeriveInput, LitInt, Path, Token}; // Inspiration: https://docs.rs/syn/2.0.29/syn/meta/fn.parser.html#example-1 -#[derive(Default)] pub(crate) struct ModelAttributes { pub(crate) id: Option, pub(crate) version: Option, @@ -28,6 +27,18 @@ pub(crate) struct ModelAttributes { pub(crate) try_from: Option<(Path, Path)>, } +impl Default for ModelAttributes { + fn default() -> Self { + ModelAttributes { + id: None, + version: None, + with: Some(syn::parse_str::("native_model::bincode_1_3::Bincode").unwrap()), + from: None, + try_from: None, + } + } +} + impl ModelAttributes { fn parse(&mut self, meta: ParseNestedMeta) -> Result<()> { if meta.path.is_ident("id") { diff --git a/libraries/native_model/native_model_macro/src/method/decode_body.rs b/libraries/native_model/native_model_macro/src/method/decode_body.rs index e229651c..474ca77d 100644 --- a/libraries/native_model/native_model_macro/src/method/decode_body.rs +++ b/libraries/native_model/native_model_macro/src/method/decode_body.rs @@ -7,7 +7,6 @@ pub(crate) fn generate_native_model_decode_body(attrs: &ModelAttributes) -> Toke let with = attrs.with.clone().expect("`with` is required"); let gen = quote! { fn native_model_decode_body(data: Vec, id: u32) -> std::result::Result { - println!("id: {}, {}", id, #id); if id != #id { return Err(native_model::DecodeBodyError::MismatchedModelId); } diff --git a/libraries/native_model/tests_crate/tests/example/default_codec/default.rs b/libraries/native_model/tests_crate/tests/example/default_codec/default.rs new file mode 100644 index 00000000..aade18bb --- /dev/null +++ b/libraries/native_model/tests_crate/tests/example/default_codec/default.rs @@ -0,0 +1,18 @@ +use native_model::native_model; +use serde::Deserialize; +use serde::Serialize; + +#[derive(Serialize, Deserialize, PartialEq, Debug)] +#[native_model(id = 1, version = 1)] +struct Example { + a: u32, + b: u32, +} + +#[test] +fn encode_decode() { + let example = Example { a: 1, b: 2 }; + let bytes = native_model::encode(&example).unwrap(); + let (example, _) = native_model::decode::(bytes).unwrap(); + assert_eq!(example, Example { a: 1, b: 2 }); +} diff --git a/libraries/native_model/tests_crate/tests/example/default_codec/mod.rs b/libraries/native_model/tests_crate/tests/example/default_codec/mod.rs index eb9f386f..b608d879 100644 --- a/libraries/native_model/tests_crate/tests/example/default_codec/mod.rs +++ b/libraries/native_model/tests_crate/tests/example/default_codec/mod.rs @@ -1,3 +1,4 @@ +mod default; mod bincode_1_3; mod bincode_2_rc; mod postcard_1_0; \ No newline at end of file diff --git a/libraries/native_model/tests_crate/tests/example/default_codec/postcard_1_0.rs b/libraries/native_model/tests_crate/tests/example/default_codec/postcard_1_0.rs index a65867b6..c5813129 100644 --- a/libraries/native_model/tests_crate/tests/example/default_codec/postcard_1_0.rs +++ b/libraries/native_model/tests_crate/tests/example/default_codec/postcard_1_0.rs @@ -2,7 +2,8 @@ use native_model::{native_model}; use serde::Deserialize; use serde::Serialize; -#[derive(Serialize, Deserialize, PartialEq, Debug)] +#[derive(Serialize)] +#[derive(Deserialize, PartialEq, Debug)] #[native_model(id = 1, version = 1, with = native_model::postcard_1_0::PostCard)] struct Example { a: u32,