feat: default bincode 1.3.3

This commit is contained in:
Vincent Herlemont
2023-10-29 09:41:42 +01:00
parent ac601f4c98
commit 383379fe1e
11 changed files with 48 additions and 3 deletions
+6 -1
View File
@@ -20,13 +20,18 @@ thiserror = "1.0"
anyhow = "1.0"
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 }
[dev-dependencies]
serde = { version = "1.0", features = ["derive"] }
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"]
[[bench]]
name = "overhead"
harness = false
@@ -0,0 +1,19 @@
use bincode_1_3::{deserialize, serialize, Error};
use serde::{Deserialize, Serialize};
#[derive(Default)]
pub struct Bincode;
impl<T: Serialize> super::Encode<T> for Bincode {
type Error = Error;
fn encode(obj: &T) -> Result<Vec<u8>, Error> {
Ok(serialize(obj)?)
}
}
impl<T: for<'a> Deserialize<'a>> super::Decode<T> for Bincode {
type Error = Error;
fn decode(data: Vec<u8>) -> Result<T, Error> {
Ok(deserialize(&data[..])?)
}
}
+2
View File
@@ -1,3 +1,5 @@
pub mod bincode_1_3;
/// Encode trait for your own encoding method.
///
/// Example:
+1
View File
@@ -16,6 +16,7 @@
//! See examples in the [README.md](https://github.com/vincent-herlemont/native_model) file.
mod codec;
pub use codec::*;
mod header;
mod model;
pub mod wrapper;
@@ -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, with = native_model::bincode_1_3::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::<Example>(bytes).unwrap();
assert_eq!(example, Example { a: 1, b: 2 });
}
@@ -0,0 +1 @@
mod bincode_1_3;
+1 -1
View File
@@ -1,3 +1,3 @@
mod encode_decode;
mod default_codec;
mod example_define_model;
mod example_main;
-1
View File
@@ -1,7 +1,6 @@
use bincode::{config, Decode, Encode};
use native_model::Model;
use native_model_macro::native_model;
pub struct Bincode;
impl<T: bincode::Encode> native_model::Encode<T> for Bincode {