From 7ff3b31c9b1f6134ac10a3dfa8fe7d551a263127 Mon Sep 17 00:00:00 2001 From: Vincent Herlemont Date: Sun, 29 Oct 2023 09:42:30 +0100 Subject: [PATCH] feat: default bincode 2.0.0-rc.* --- Cargo.toml | 4 ++-- src/codec/bincode_2_rc.rs | 22 +++++++++++++++++++ src/codec/mod.rs | 1 + tests_crate/.gitignore | 2 ++ tests_crate/Cargo.toml | 13 +++++++++++ {tests => tests_crate/tests}/_example.rs | 0 {tests => tests_crate/tests}/_experiment.rs | 0 .../tests}/example/custom_codec/bincode.rs | 2 +- .../example/custom_codec/bincode_serde.rs | 2 +- .../tests}/example/custom_codec/mod.rs | 0 .../example/default_codec/bincode_1_3.rs | 0 .../example/default_codec/bincode_2_rc.rs | 18 +++++++++++++++ .../tests}/example/default_codec/mod.rs | 1 + .../tests}/example/example_define_model.rs | 2 +- .../tests}/example/example_main.rs | 0 {tests => tests_crate/tests}/example/mod.rs | 0 {tests => tests_crate/tests}/macro.rs | 3 +-- .../tests}/macro_decode_decode_upgrade.rs | 2 +- .../tests}/macro_encode_decode.rs | 2 +- tests_crate/tests/mod.rs | 1 + .../tests}/native_model_from.rs | 2 +- .../tests}/native_model_try_from.rs | 2 +- 22 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 src/codec/bincode_2_rc.rs create mode 100644 tests_crate/.gitignore create mode 100644 tests_crate/Cargo.toml rename {tests => tests_crate/tests}/_example.rs (100%) rename {tests => tests_crate/tests}/_experiment.rs (100%) rename {tests => tests_crate/tests}/example/custom_codec/bincode.rs (96%) rename {tests => tests_crate/tests}/example/custom_codec/bincode_serde.rs (97%) rename {tests => tests_crate/tests}/example/custom_codec/mod.rs (100%) rename {tests => tests_crate/tests}/example/default_codec/bincode_1_3.rs (100%) create mode 100644 tests_crate/tests/example/default_codec/bincode_2_rc.rs rename {tests => tests_crate/tests}/example/default_codec/mod.rs (50%) rename {tests => tests_crate/tests}/example/example_define_model.rs (98%) rename {tests => tests_crate/tests}/example/example_main.rs (100%) rename {tests => tests_crate/tests}/example/mod.rs (100%) rename {tests => tests_crate/tests}/macro.rs (95%) rename {tests => tests_crate/tests}/macro_decode_decode_upgrade.rs (99%) rename {tests => tests_crate/tests}/macro_encode_decode.rs (97%) create mode 100644 tests_crate/tests/mod.rs rename {tests => tests_crate/tests}/native_model_from.rs (98%) rename {tests => tests_crate/tests}/native_model_try_from.rs (98%) diff --git a/Cargo.toml b/Cargo.toml index 7f0fdf6..632312c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,15 +22,15 @@ native_model_macro = { version = "0.3.30", path = "native_model_macro" } serde = { version = "1.0", features = ["derive"], optional = true } bincode_1_3 = { package = "bincode", version = "1.3", optional = true } +bincode_2_rc = { package = "bincode", version = "2.0.0-rc.3", features = ["serde"], optional = true } [dev-dependencies] -bincode = { version = "2.0.0-rc.3", features = ["serde"] } serde_json = "1.0" criterion = { version = "0.5.1" } skeptic = "0.13" [features] -default = ["serde", "bincode_1_3"] +default = ["serde", "bincode_1_3", "bincode_2_rc"] [[bench]] name = "overhead" diff --git a/src/codec/bincode_2_rc.rs b/src/codec/bincode_2_rc.rs new file mode 100644 index 0000000..400bf40 --- /dev/null +++ b/src/codec/bincode_2_rc.rs @@ -0,0 +1,22 @@ +use bincode_2_rc::{ + config, + error::{DecodeError, EncodeError}, + serde::{decode_from_slice, encode_to_vec}, +}; +use serde::{Deserialize, Serialize}; + +pub struct Bincode; + +impl super::Encode for Bincode { + type Error = EncodeError; + fn encode(obj: &T) -> Result, EncodeError> { + encode_to_vec(obj, config::standard()) + } +} + +impl Deserialize<'a>> super::Decode for Bincode { + type Error = DecodeError; + fn decode(data: Vec) -> Result { + Ok(decode_from_slice(&data, config::standard())?.0) + } +} diff --git a/src/codec/mod.rs b/src/codec/mod.rs index 44f71ed..8369189 100644 --- a/src/codec/mod.rs +++ b/src/codec/mod.rs @@ -1,4 +1,5 @@ pub mod bincode_1_3; +pub mod bincode_2_rc; /// Encode trait for your own encoding method. /// diff --git a/tests_crate/.gitignore b/tests_crate/.gitignore new file mode 100644 index 0000000..2ebc5ea --- /dev/null +++ b/tests_crate/.gitignore @@ -0,0 +1,2 @@ +/target +/Cargo.lock \ No newline at end of file diff --git a/tests_crate/Cargo.toml b/tests_crate/Cargo.toml new file mode 100644 index 0000000..ac4fb18 --- /dev/null +++ b/tests_crate/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "tests_crate" +version = "0.1.0" +edition = "2021" + + +[workspace] + +[dev-dependencies] +native_model = { path = "../" } +serde = { version = "1.0", features = ["derive"] } +bincode = { version = "2.0.0-rc.3", features = ["serde"] } +anyhow = "1.0.44" \ No newline at end of file diff --git a/tests/_example.rs b/tests_crate/tests/_example.rs similarity index 100% rename from tests/_example.rs rename to tests_crate/tests/_example.rs diff --git a/tests/_experiment.rs b/tests_crate/tests/_experiment.rs similarity index 100% rename from tests/_experiment.rs rename to tests_crate/tests/_experiment.rs diff --git a/tests/example/custom_codec/bincode.rs b/tests_crate/tests/example/custom_codec/bincode.rs similarity index 96% rename from tests/example/custom_codec/bincode.rs rename to tests_crate/tests/example/custom_codec/bincode.rs index 7150777..9b1cadf 100644 --- a/tests/example/custom_codec/bincode.rs +++ b/tests_crate/tests/example/custom_codec/bincode.rs @@ -17,7 +17,7 @@ impl native_model::Decode for Bincode { } } -use native_model_macro::native_model; +use native_model::native_model; #[derive(Encode, Decode, PartialEq, Debug)] #[native_model(id = 1, version = 1, with = Bincode)] diff --git a/tests/example/custom_codec/bincode_serde.rs b/tests_crate/tests/example/custom_codec/bincode_serde.rs similarity index 97% rename from tests/example/custom_codec/bincode_serde.rs rename to tests_crate/tests/example/custom_codec/bincode_serde.rs index 090bebd..8d23975 100644 --- a/tests/example/custom_codec/bincode_serde.rs +++ b/tests_crate/tests/example/custom_codec/bincode_serde.rs @@ -33,7 +33,7 @@ impl Deserialize<'a>> native_model::Decode for Bincode { } } -use native_model_macro::native_model; +use native_model::native_model; #[derive(Serialize, Deserialize, PartialEq, Debug)] #[native_model(id = 1, version = 1, with = Bincode)] diff --git a/tests/example/custom_codec/mod.rs b/tests_crate/tests/example/custom_codec/mod.rs similarity index 100% rename from tests/example/custom_codec/mod.rs rename to tests_crate/tests/example/custom_codec/mod.rs diff --git a/tests/example/default_codec/bincode_1_3.rs b/tests_crate/tests/example/default_codec/bincode_1_3.rs similarity index 100% rename from tests/example/default_codec/bincode_1_3.rs rename to tests_crate/tests/example/default_codec/bincode_1_3.rs diff --git a/tests_crate/tests/example/default_codec/bincode_2_rc.rs b/tests_crate/tests/example/default_codec/bincode_2_rc.rs new file mode 100644 index 0000000..3ee8680 --- /dev/null +++ b/tests_crate/tests/example/default_codec/bincode_2_rc.rs @@ -0,0 +1,18 @@ +use native_model::{native_model, bincode_2_rc}; +use serde::Deserialize; +use serde::Serialize; + +#[derive(Serialize, Deserialize, PartialEq, Debug)] +#[native_model(id = 1, version = 1, with = native_model::bincode_2_rc::Bincode)] +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/tests/example/default_codec/mod.rs b/tests_crate/tests/example/default_codec/mod.rs similarity index 50% rename from tests/example/default_codec/mod.rs rename to tests_crate/tests/example/default_codec/mod.rs index 6447aa6..b146d1f 100644 --- a/tests/example/default_codec/mod.rs +++ b/tests_crate/tests/example/default_codec/mod.rs @@ -1 +1,2 @@ mod bincode_1_3; +mod bincode_2_rc; \ No newline at end of file diff --git a/tests/example/example_define_model.rs b/tests_crate/tests/example/example_define_model.rs similarity index 98% rename from tests/example/example_define_model.rs rename to tests_crate/tests/example/example_define_model.rs index 14b204b..6556c8f 100644 --- a/tests/example/example_define_model.rs +++ b/tests_crate/tests/example/example_define_model.rs @@ -1,5 +1,5 @@ use bincode::{config, Decode, Encode}; -use native_model_macro::native_model; +use native_model::native_model; pub struct Bincode; diff --git a/tests/example/example_main.rs b/tests_crate/tests/example/example_main.rs similarity index 100% rename from tests/example/example_main.rs rename to tests_crate/tests/example/example_main.rs diff --git a/tests/example/mod.rs b/tests_crate/tests/example/mod.rs similarity index 100% rename from tests/example/mod.rs rename to tests_crate/tests/example/mod.rs diff --git a/tests/macro.rs b/tests_crate/tests/macro.rs similarity index 95% rename from tests/macro.rs rename to tests_crate/tests/macro.rs index 3d6459a..21ea307 100644 --- a/tests/macro.rs +++ b/tests_crate/tests/macro.rs @@ -1,6 +1,5 @@ use bincode::{config, Decode, Encode}; -use native_model::Model; -use native_model_macro::native_model; +use native_model::{native_model, Model}; pub struct Bincode; impl native_model::Encode for Bincode { diff --git a/tests/macro_decode_decode_upgrade.rs b/tests_crate/tests/macro_decode_decode_upgrade.rs similarity index 99% rename from tests/macro_decode_decode_upgrade.rs rename to tests_crate/tests/macro_decode_decode_upgrade.rs index a6e6aa7..7cd81fa 100644 --- a/tests/macro_decode_decode_upgrade.rs +++ b/tests_crate/tests/macro_decode_decode_upgrade.rs @@ -1,6 +1,6 @@ use bincode::{config, Decode, Encode}; +use native_model::native_model; use native_model::Model; -use native_model_macro::native_model; pub struct Bincode; diff --git a/tests/macro_encode_decode.rs b/tests_crate/tests/macro_encode_decode.rs similarity index 97% rename from tests/macro_encode_decode.rs rename to tests_crate/tests/macro_encode_decode.rs index a2c42ba..bd160f2 100644 --- a/tests/macro_encode_decode.rs +++ b/tests_crate/tests/macro_encode_decode.rs @@ -1,6 +1,6 @@ use bincode::{config, Decode, Encode}; +use native_model::native_model; use native_model::Model; -use native_model_macro::native_model; pub struct Bincode; diff --git a/tests_crate/tests/mod.rs b/tests_crate/tests/mod.rs new file mode 100644 index 0000000..4fb0273 --- /dev/null +++ b/tests_crate/tests/mod.rs @@ -0,0 +1 @@ +mod example; diff --git a/tests/native_model_from.rs b/tests_crate/tests/native_model_from.rs similarity index 98% rename from tests/native_model_from.rs rename to tests_crate/tests/native_model_from.rs index 4dd66ce..0ec5c1c 100644 --- a/tests/native_model_from.rs +++ b/tests_crate/tests/native_model_from.rs @@ -1,5 +1,5 @@ use bincode::{config, Decode, Encode}; -use native_model_macro::native_model; +use native_model::native_model; pub struct Bincode; impl native_model::Encode for Bincode { type Error = bincode::error::EncodeError; diff --git a/tests/native_model_try_from.rs b/tests_crate/tests/native_model_try_from.rs similarity index 98% rename from tests/native_model_try_from.rs rename to tests_crate/tests/native_model_try_from.rs index c223d94..c84da6a 100644 --- a/tests/native_model_try_from.rs +++ b/tests_crate/tests/native_model_try_from.rs @@ -1,5 +1,5 @@ use bincode::{config, Decode, Encode}; -use native_model_macro::native_model; +use native_model::native_model; pub struct Bincode;