//! Utils pub trait NewCapacity: Sized { fn new() -> Self; fn with_capacity(cap: usize) -> Self; } impl NewCapacity for String { fn new() -> Self { Self::new() } fn with_capacity(cap: usize) -> Self { Self::with_capacity(cap) } } impl NewCapacity for Vec { fn new() -> Self { Self::new() } fn with_capacity(cap: usize) -> Self { Self::with_capacity(cap) } } pub fn hint_cap(iter: &I) -> T { match iter.size_hint() { (0, Some(0)) | (0, None) => T::new(), (_, Some(x)) | (x, _) => T::with_capacity(x) } }