counter 0.7.1

Simple package to count generic iterables
Documentation
use std::hash::{Hash, BuildHasher};

use num_traits::Zero;
use serde::{de::Deserializer, ser::Serializer, Deserialize, Serialize};

use crate::Counter;

impl<T, N, St> Serialize for Counter<T, N, St>
where
    T: Serialize,
    N: Serialize,
{
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        self.map.serialize(serializer)
    }
}

impl<'de, T, N, St> Deserialize<'de> for Counter<T, N, St>
where
    T: Deserialize<'de> + Hash + Eq,
    N: Deserialize<'de> + Zero,
    St: Default + BuildHasher,
{
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
        D: Deserializer<'de>,
    {
        let map = <_>::deserialize(deserializer)?;
        let zero = N::zero();
        Ok(Counter { map, zero })
    }
}