dynamic-pool 0.2.2

a lock-free, thread-safe, dynamically-sized object pool.
Documentation
pub trait DynamicReset {
    fn reset(&mut self);
}

impl<T> DynamicReset for Option<T>
where
    T: DynamicReset,
{
    fn reset(&mut self) {
        if let Some(x) = self {
            x.reset();
        }
    }
}

impl<T1, T2> DynamicReset for (T1, T2)
where
    T1: DynamicReset,
    T2: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
    }
}

impl<T1, T2, T3> DynamicReset for (T1, T2, T3)
where
    T1: DynamicReset,
    T2: DynamicReset,
    T3: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
        self.2.reset();
    }
}

impl<T1, T2, T3, T4> DynamicReset for (T1, T2, T3, T4)
where
    T1: DynamicReset,
    T2: DynamicReset,
    T3: DynamicReset,
    T4: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
        self.2.reset();
        self.3.reset();
    }
}

impl<T1, T2, T3, T4, T5> DynamicReset for (T1, T2, T3, T4, T5)
where
    T1: DynamicReset,
    T2: DynamicReset,
    T3: DynamicReset,
    T4: DynamicReset,
    T5: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
        self.2.reset();
        self.3.reset();
        self.4.reset();
    }
}

impl<T1, T2, T3, T4, T5, T6> DynamicReset for (T1, T2, T3, T4, T5, T6)
where
    T1: DynamicReset,
    T2: DynamicReset,
    T3: DynamicReset,
    T4: DynamicReset,
    T5: DynamicReset,
    T6: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
        self.2.reset();
        self.3.reset();
        self.4.reset();
        self.5.reset();
    }
}

impl<T1, T2, T3, T4, T5, T6, T7> DynamicReset for (T1, T2, T3, T4, T5, T6, T7)
where
    T1: DynamicReset,
    T2: DynamicReset,
    T3: DynamicReset,
    T4: DynamicReset,
    T5: DynamicReset,
    T6: DynamicReset,
    T7: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
        self.2.reset();
        self.3.reset();
        self.4.reset();
        self.5.reset();
        self.6.reset();
    }
}

impl<T1, T2, T3, T4, T5, T6, T7, T8> DynamicReset for (T1, T2, T3, T4, T5, T6, T7, T8)
where
    T1: DynamicReset,
    T2: DynamicReset,
    T3: DynamicReset,
    T4: DynamicReset,
    T5: DynamicReset,
    T6: DynamicReset,
    T7: DynamicReset,
    T8: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
        self.2.reset();
        self.3.reset();
        self.4.reset();
        self.5.reset();
        self.6.reset();
        self.7.reset();
    }
}

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> DynamicReset for (T1, T2, T3, T4, T5, T6, T7, T8, T9)
where
    T1: DynamicReset,
    T2: DynamicReset,
    T3: DynamicReset,
    T4: DynamicReset,
    T5: DynamicReset,
    T6: DynamicReset,
    T7: DynamicReset,
    T8: DynamicReset,
    T9: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
        self.2.reset();
        self.3.reset();
        self.4.reset();
        self.5.reset();
        self.6.reset();
        self.7.reset();
        self.8.reset();
    }
}

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> DynamicReset
    for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
where
    T1: DynamicReset,
    T2: DynamicReset,
    T3: DynamicReset,
    T4: DynamicReset,
    T5: DynamicReset,
    T6: DynamicReset,
    T7: DynamicReset,
    T8: DynamicReset,
    T9: DynamicReset,
    T10: DynamicReset,
{
    fn reset(&mut self) {
        self.0.reset();
        self.1.reset();
        self.2.reset();
        self.3.reset();
        self.4.reset();
        self.5.reset();
        self.6.reset();
        self.7.reset();
        self.8.reset();
        self.9.reset();
    }
}