mirror of
https://github.com/Drop-OSS/native_model.git
synced 2026-01-30 20:55:19 +01:00
feat: default bincode 2.0.0-rc.*
This commit is contained in:
@@ -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"
|
||||
|
||||
22
src/codec/bincode_2_rc.rs
Normal file
22
src/codec/bincode_2_rc.rs
Normal file
@@ -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<T: Serialize> super::Encode<T> for Bincode {
|
||||
type Error = EncodeError;
|
||||
fn encode(obj: &T) -> Result<Vec<u8>, EncodeError> {
|
||||
encode_to_vec(obj, config::standard())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: for<'a> Deserialize<'a>> super::Decode<T> for Bincode {
|
||||
type Error = DecodeError;
|
||||
fn decode(data: Vec<u8>) -> Result<T, DecodeError> {
|
||||
Ok(decode_from_slice(&data, config::standard())?.0)
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
pub mod bincode_1_3;
|
||||
pub mod bincode_2_rc;
|
||||
|
||||
/// Encode trait for your own encoding method.
|
||||
///
|
||||
|
||||
2
tests_crate/.gitignore
vendored
Normal file
2
tests_crate/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/target
|
||||
/Cargo.lock
|
||||
13
tests_crate/Cargo.toml
Normal file
13
tests_crate/Cargo.toml
Normal file
@@ -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"
|
||||
@@ -17,7 +17,7 @@ impl<T: bincode::Decode> native_model::Decode<T> 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)]
|
||||
@@ -33,7 +33,7 @@ impl<T: for<'a> Deserialize<'a>> native_model::Decode<T> 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)]
|
||||
18
tests_crate/tests/example/default_codec/bincode_2_rc.rs
Normal file
18
tests_crate/tests/example/default_codec/bincode_2_rc.rs
Normal file
@@ -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::<Example>(bytes).unwrap();
|
||||
assert_eq!(example, Example { a: 1, b: 2 });
|
||||
}
|
||||
@@ -1 +1,2 @@
|
||||
mod bincode_1_3;
|
||||
mod bincode_2_rc;
|
||||
@@ -1,5 +1,5 @@
|
||||
use bincode::{config, Decode, Encode};
|
||||
use native_model_macro::native_model;
|
||||
use native_model::native_model;
|
||||
|
||||
pub struct Bincode;
|
||||
|
||||
@@ -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<T: bincode::Encode> native_model::Encode<T> for Bincode {
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
1
tests_crate/tests/mod.rs
Normal file
1
tests_crate/tests/mod.rs
Normal file
@@ -0,0 +1 @@
|
||||
mod example;
|
||||
@@ -1,5 +1,5 @@
|
||||
use bincode::{config, Decode, Encode};
|
||||
use native_model_macro::native_model;
|
||||
use native_model::native_model;
|
||||
pub struct Bincode;
|
||||
impl<T: bincode::Encode> native_model::Encode<T> for Bincode {
|
||||
type Error = bincode::error::EncodeError;
|
||||
@@ -1,5 +1,5 @@
|
||||
use bincode::{config, Decode, Encode};
|
||||
use native_model_macro::native_model;
|
||||
use native_model::native_model;
|
||||
|
||||
pub struct Bincode;
|
||||
|
||||
Reference in New Issue
Block a user