Rust Collection Traits

Abstract common operations from std collections. For a working sample, check tests/group_by.rs

This crate is experimental. Better a RFC is needed to formally abstract operations (like Cpp Concept/Named requirements).

Collections in std: * slice: &[T], &mut [T] * array: [T; N] * sequence: Vec<T>, VecDeque<T>, LinkedList<T> * set: BTreeSet<T>, HashSet<T> * map: BTreeMap<T>, HashMap<T> * misc: BinaryHeap<T>

General Categories: * Collection: All collections, excluding associated ones. - AllocatorAwareCollection: Allocator-aware collections, currently there is only Vec<T, A>. - CapacityAwareCollection: Capacity-aware collections, those you can reserve, create with a given amount of capacity. E.g. HashSet::with_capacity - ContiguousCollection: Contiguous collections, where behaves like a contiguous region of memory. E.g. Vec::as_slice - SequentialCollection: Sequential collections, where you can traverse it in one direction, and modify at the end. E.g. VecDeque::push_back - DoubleEndedCollection: Double-ended collections, where you do sequential-like operations on both ends. E.g. LinkedList<T>::pop_front - RandomAccessCollection: Random access collections, where you can access by indices. E.g. VecDeque<T>::get * AssociatedCollection - AssociatedCapacityAwareCollection: Capacity-aware associated collections. - Set<S>: Set-like collections, HashSet<K, S> and BTreeSet<K> - OrderedSe<S>: Ordered set-like collections, BTreeSet<K> - Map<S>: Map-like collections, HashMap<K, V, S> and BTreeMap<K, V> - OrderedMap<S>: Ordered map-like collections, BTreeMap<K, V> * Other miscellaneous operations - Retainable or AssocaitedRetainable: Ability to retain specific elements. - Contains: Ability to test if an element is in sequence. - DrainFull/DrainRange/{Associated}DrainFilter: Ability to drain a specific amount of elements without drop the original collection. - Range/RangeMut: Ability to generate a view of original sequence.

TODOs