[dev-dependencies]
rand = "0.3"
+[dependencies]
+serde2 = { package = "serde", version = "1", default-features = true, optional = true }
+
[dependencies.bit-vec]
version = "0.6.1"
default-features = false
[features]
default = ["std"]
std = ["bit-vec/std"]
+serde = ["serde2", "bit-vec/serde"]
extern crate bit_vec;
#[cfg(all(test, feature = "nightly"))]
extern crate rand;
+#[cfg(feature = "serde")]
+extern crate serde2;
#[cfg(all(test, feature = "nightly"))]
extern crate test;
use core::hash;
use core::iter::{self, Chain, Enumerate, FromIterator, Repeat, Skip, Take};
+#[cfg(feature = "serde")]
+use serde2::{Deserialize, Deserializer, Serialize, Serializer};
+
type MatchWords<'a, B> = Chain<Enumerate<Blocks<'a, B>>, Skip<Take<Enumerate<Repeat<B>>>>>;
/// Computes how many blocks are needed to store that many bits
}
}
+#[cfg(feature = "serde")]
+impl<B: BitBlock + Serialize> Serialize for BitSet<B> {
+ fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
+ self.bit_vec.serialize(serializer)
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<'de, B: BitBlock + Deserialize<'de>> Deserialize<'de> for BitSet<B> {
+ fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
+ Ok(Self {
+ bit_vec: BitVec::deserialize(deserializer)?,
+ })
+ }
+}
+
#[derive(Clone)]
struct BlockIter<T, B> {
head: B,