From 532ba8381f4f4ca5ab25067d4f76a6c6ec75e1db Mon Sep 17 00:00:00 2001 From: Astro Date: Fri, 11 Dec 2020 19:13:00 +0100 Subject: [PATCH] read_value()/write_value(): put behind feature postcard-values --- Cargo.toml | 8 ++++++-- src/error.rs | 2 ++ src/lib.rs | 6 +++++- src/test.rs | 5 +++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cf8322c..8de9a3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,11 @@ categories = ["embedded", "database"] license = "GPL-3" edition = "2018" +[features] +default = ["postcard-values"] +postcard-values = ["postcard", "serde"] + [dependencies] byteorder = { version = "1", default-features = false } -serde = { version = "1.0", default-features = false } -postcard = "0.5" +serde = { version = "1.0", default-features = false, optional = true } +postcard = { version = "0.5", optional = true } diff --git a/src/error.rs b/src/error.rs index c213fa4..701d076 100644 --- a/src/error.rs +++ b/src/error.rs @@ -4,7 +4,9 @@ use core::{fmt, str}; pub enum Error { Read(ReadError), Write(WriteError), + #[cfg(feature = "postcard-values")] Encode(postcard::Error), + #[cfg(feature = "postcard-values")] Decode(postcard::Error), } diff --git a/src/lib.rs b/src/lib.rs index bba7377..a209620 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ use core::{mem::size_of, str}; use byteorder::{ByteOrder, BigEndian}; +#[cfg(feature = "postcard-values")] use serde::{Deserialize, Serialize}; mod error; @@ -59,10 +60,12 @@ impl Store { .map(|value| str::from_utf8(value) .map_err(ReadError::Utf8Error) ) - .transpose()) + .transpose() + ) } /// read from `key`, decode with `postcard` + #[cfg(feature = "postcard-values")] pub fn read_value<'a, T: Deserialize<'a>>(&'a self, key: &str) -> Result, Error> { self.read(key)? .map( @@ -159,6 +162,7 @@ impl Store { } /// encode with `postcard`, write at `key` + #[cfg(feature = "postcard-values")] pub fn write_value(&mut self, key: &str, value: T) -> Result<(), Error> { let mut buf = [0; 64]; let data = postcard::to_slice(&value, &mut buf) diff --git a/src/test.rs b/src/test.rs index 849bfb2..d7a914b 100644 --- a/src/test.rs +++ b/src/test.rs @@ -74,6 +74,7 @@ fn write_read_str_utf8() { } #[test] +#[cfg(feature = "postcard-values")] fn write_read_value_str() { let mut store = make_store(); store.write_value("foo", "bar").unwrap(); @@ -81,6 +82,7 @@ fn write_read_value_str() { } #[test] +#[cfg(feature = "postcard-values")] fn write_read_value_u32() { let mut store = make_store(); store.write_value("foo", 42005u32).unwrap(); @@ -88,6 +90,7 @@ fn write_read_value_u32() { } #[test] +#[cfg(feature = "postcard-values")] fn write_read_value_i64() { let mut store = make_store(); store.write_value("foo", -99999999i64).unwrap(); @@ -95,6 +98,7 @@ fn write_read_value_i64() { } #[test] +#[cfg(feature = "postcard-values")] fn write_read_value_f32() { let mut store = make_store(); store.write_value("foo", 3.75e17f32).unwrap(); @@ -102,6 +106,7 @@ fn write_read_value_f32() { } #[test] +#[cfg(feature = "postcard-values")] fn write_read_value_f64() { let mut store = make_store(); store.write_value("foo", -1.999e-13f64).unwrap();