From 5a49c7f78c6b2f5d7de7fc01b515788e88da207b Mon Sep 17 00:00:00 2001 From: Keshav Narayan Date: Thu, 11 Mar 2021 00:36:51 -0800 Subject: [PATCH] added test to optional serde support pull request --- Cargo.toml | 6 ++++++ src/lib.rs | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index e860fba..5dbc3d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,3 +18,9 @@ default = ["std"] [package.metadata.release] no-dev-version = true tag-name = "{{version}}" + +[dependencies] +serde = { version = "1.0", features = ["derive"], optional = true } + +[dev-dependencies] +serde_json = "1.0" diff --git a/src/lib.rs b/src/lib.rs index 47b626e..4800bfa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -28,6 +28,11 @@ use core as std; mod range; +#[cfg(feature = "serde")] +extern crate serde; +#[cfg(feature = "serde")] +use serde::{Serialize, Deserialize}; + use std::fmt::Write; use std::fmt::{Display, Error, Formatter, Binary}; @@ -51,6 +56,7 @@ fn div_rem(x: usize, d: usize) -> (usize, usize) /// The bit set has a fixed capacity in terms of enabling bits (and the /// capacity can grow using the `grow` method). #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct FixedBitSet { data: Vec, /// length in bits @@ -1574,3 +1580,15 @@ fn display_trait() { assert_eq!(format!("{}", fb), "00101000"); assert_eq!(format!("{:#}", fb), "0b00101000"); } + +#[test] +#[cfg(feature="serde")] +fn test_serialize() { + let mut fb = FixedBitSet::with_capacity(10); + fb.put(2); + fb.put(3); + fb.put(6); + fb.put(8); + let serialized = serde_json::to_string(&fb).unwrap(); + assert_eq!(r#"{"data":[332],"length":10}"#, serialized); +}