diff --git a/Cargo.toml b/Cargo.toml index 5b0f83c..6110c6d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codee" -version = "0.3.1" +version = "0.3.2" edition = "2021" authors = ["Marc-Stefan Cassola"] categories = ["encoding"] @@ -16,7 +16,7 @@ base64 = { version = "0.22", optional = true } js-sys = { version = "0.3", optional = true } miniserde = { version = "0.1", optional = true } prost = { version = "0.14", optional = true } -rkyv = { version = "0.8.9", optional = true } +rkyv = { version = "0.8.10", optional = true } rmp-serde = { version = "1.1", optional = true } serde = { version = "1", optional = true } serde_json = { version = "1", optional = true } @@ -32,6 +32,7 @@ bincode_v1 = { package = "bincode", version = "1", optional = true } bincode = { package = "bincode", version = "2.0.1", optional = true } [features] +rkyv = ["dep:rkyv"] prost = ["dep:prost"] json_serde = ["dep:serde_json", "dep:serde"] msgpack_serde = ["dep:rmp-serde", "dep:serde"] @@ -50,8 +51,6 @@ json_serde_wasm = [ [dev-dependencies] serde = { version = "1", features = ["derive"] } serde-lite = { version = "0.5", features = ["derive"] } -leptos = "0.8" -leptos-use = "0.16" [package.metadata.docs.rs] all-features = true diff --git a/src/binary/rkyv.rs b/src/binary/rkyv.rs index 8dd96ae..1e375e3 100644 --- a/src/binary/rkyv.rs +++ b/src/binary/rkyv.rs @@ -3,6 +3,7 @@ use rkyv::api::high::{HighSerializer, HighValidator}; use rkyv::de::Pool; use rkyv::rancor::Strategy; use rkyv::ser::allocator::ArenaHandle; +pub use rkyv::util::AlignedVec; use rkyv::{bytecheck, rancor, Archive, Deserialize, Serialize}; use std::error::Error; use std::sync::Arc; @@ -35,7 +36,9 @@ where type Encoded = [u8]; fn decode(val: &Self::Encoded) -> Result { - rkyv::from_bytes::(val).map_err(|e| Arc::new(e) as Arc) + let mut aligned = AlignedVec::<16>::with_capacity(val.len()); + aligned.extend_from_slice(val); + rkyv::from_bytes::(&aligned).map_err(|e| Arc::new(e) as Arc) } }