diff --git a/Cargo.lock b/Cargo.lock index ec01a84..ebbd5f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -351,7 +351,6 @@ dependencies = [ "async-compression 0.4.1", "async-stream", "async_zip", - "bincode", "fmmap", "futures", "futures-core", @@ -359,6 +358,7 @@ dependencies = [ "insta", "memmap", "pin-project", + "postcard", "serde", "serde_derive", "serde_json", @@ -467,6 +467,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + [[package]] name = "colorchoice" version = "1.0.0" @@ -1248,6 +1254,16 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "postcard" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9ee729232311d3cd113749948b689627618133b1c5012b77342c1950b25eaeb" +dependencies = [ + "cobs", + "serde", +] + [[package]] name = "ppv-lite86" version = "0.2.17" diff --git a/lib/Cargo.toml b/lib/Cargo.toml index a409f7c..c0566ab 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -12,40 +12,16 @@ description = "Библиотека для доступа к файлу базы [features] default = [] sync = ["zstd", "memmap"] -async = [ - "futures", - "futures-core", - "futures-util", - "fmmap", - "tokio", - "async-compression", - "async-stream", - "pin-project", -] +async = ["futures", "futures-core", "futures-util", "fmmap", "tokio", "async-compression", "async-stream", "pin-project"] source = ["zip"] -source_async = [ - "async_zip", - "tokio", - "futures", - "futures-core", - "futures-util", - "async-stream", -] +source_async = ["async_zip", "tokio", "futures", "futures-core", "futures-util", "async-stream"] convert = ["zip"] -convert_async = [ - "futures", - "futures-core", - "futures-util", - "async-stream", - "async_zip", - "tokio", -] +convert_async = ["futures", "futures-core", "futures-util", "async-stream", "async_zip", "tokio"] [dependencies] serde = "1.0" serde_derive = "1.0" serde_json = "1.0" -bincode = "^2.0.0-rc.2" zip = { version = "0.6", optional = true } async_zip = { version = "0.0.15" , features = [ "zstd", @@ -70,6 +46,7 @@ async-stream = { version = "0.3", optional = true } zstd = { version = "^0.12", default-features = false, optional = true } memmap = { version = "0.7.0", optional = true } pin-project = { version = "1.1.3", optional = true } +postcard = { version = "1.0.6", default-features = false, features = ["use-std"] } [dev-dependencies] insta = { version = "1.31.0", features = ["yaml"] } diff --git a/lib/src/questions.rs b/lib/src/questions.rs index 4bfc7b9..29a0745 100644 --- a/lib/src/questions.rs +++ b/lib/src/questions.rs @@ -1,8 +1,6 @@ use serde_derive::{Deserialize, Serialize}; -#[derive( - Debug, Default, Clone, Serialize, Deserialize, bincode::Decode, bincode::Encode, PartialEq, -)] +#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)] pub struct BatchInfo { #[serde(default, skip_serializing_if = "String::is_empty")] pub filename: String, @@ -32,9 +30,7 @@ pub struct BatchInfo { pub rating: String, } -#[derive( - Debug, Default, Clone, Serialize, Deserialize, bincode::Decode, bincode::Encode, PartialEq, -)] +#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)] pub struct Question { #[serde(default, skip_serializing_if = "u32_is_zero")] pub num: u32, diff --git a/lib/src/util.rs b/lib/src/util.rs index e7c431a..28e90cc 100644 --- a/lib/src/util.rs +++ b/lib/src/util.rs @@ -12,46 +12,3 @@ where self.map_err(|e| e.to_string()) } } - -#[cfg(any(feature = "sync", feature = "async"))] -mod bincode_utils { - use std::ops::{Deref, DerefMut}; - - use bincode::enc::write::Writer; - use bincode::error::EncodeError; - - /// struct that allows [`Vec`] to implement [bincode::enc::write::Writer] trait - pub struct BincodeVecWriter { - vec: Vec, - } - - impl BincodeVecWriter { - pub fn new(vec: Vec) -> BincodeVecWriter { - BincodeVecWriter { vec } - } - } - - impl Deref for BincodeVecWriter { - type Target = Vec; - - fn deref(&self) -> &Self::Target { - &self.vec - } - } - - impl DerefMut for BincodeVecWriter { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.vec - } - } - - impl Writer for BincodeVecWriter { - fn write(&mut self, bytes: &[u8]) -> Result<(), EncodeError> { - self.vec.extend_from_slice(bytes); - Ok(()) - } - } -} - -#[cfg(any(feature = "sync", feature = "async"))] -pub use bincode_utils::BincodeVecWriter;