pvec 0.2.1

RRB-Tree based persistent vector implementation.
Documentation
extern crate serde;
extern crate serde_json;

use self::serde::ser::{Serialize, SerializeStruct, Serializer};
use super::RbVec;
use super::RrbVec;

macro_rules! impl_serializer {
    ($vec:ident, $name:literal) => {
        impl<T> Serialize for $vec<T>
        where
            T: Serialize,
        {
            fn serialize<S>(&self, serializer: S) -> Result<<S>::Ok, <S>::Error>
            where
                S: Serializer,
            {
                let mut serde_state = serializer.serialize_struct($name, 1)?;
                serde_state.serialize_field("tree", &self.tree)?;
                serde_state.serialize_field("tail", &self.tail)?;
                serde_state.serialize_field("tail_len", &self.tail_len)?;
                serde_state.end()
            }
        }
    };
}

impl_serializer!(RrbVec, "RrbVec");
impl_serializer!(RbVec, "RbVec");