2个版本
| 0.1.2 | 2021年8月17日 |
|---|---|
| 0.1.1 | 2021年8月16日 |
1454 在 数据结构
92KB
2K SLoC
Rust 集合特性
从 std 集合中抽象出常见操作。有关工作示例,请查看 tests/group_by.rs
此包是实验性的。最好需要一个 RFC 来正式抽象操作(如 Cpp Concept/Named requirements)。
std 中的集合
- 切片:
&[T],&mut [T] - 数组:
[T; N] - 序列:
Vec<T>,VecDeque<T>,LinkedList<T> - 集合:
BTreeSet<T>,HashSet<T> - 映射:
BTreeMap<T>,HashMap<T> - 杂项:
BinaryHeap<T>
一般分类
Collection:所有集合,不包括关联的集合。AllocatorAwareCollection:感知分配器的集合,目前只有Vec<T, A>。CapacityAwareCollection:感知容量的集合,你可以为它们预留,用指定的容量创建。例如HashSet::with_capacityContiguousCollection:连续集合,就像内存的连续区域。例如Vec::as_sliceSequentialCollection:顺序集合,你可以单向遍历它,并在末尾进行修改。例如:VecDeque::push_backDoubleEndedCollection:双端集合,你可以在两端执行类似顺序的操作。例如:LinkedList<T>::pop_frontRandomAccessCollection:随机访问集合,你可以通过索引进行访问。例如:VecDeque<T>::get
关联集合AssociatedCapacityAwareCollection:具有容量感知的关联集合。Set<S>:类似集合的集合,HashSet<K, S>和BTreeSet<K>OrderedSe<S>:有序集合,例如:BTreeSet<K>Map<S>:类似映射的集合,例如:HashMap<K, V, S>和BTreeMap<K, V>OrderedMap<S>:有序映射,例如:BTreeMap<K, V>
- 其他杂项操作
Retainable或AssocaitedRetainable:保留特定元素的能力。Contains:测试元素是否在序列中的能力。DrainFull/DrainRange/{Associated}DrainFilter:在不丢弃原始集合的情况下,能够排放特定数量的元素的能力。Range/RangeMut:生成原始序列视图的能力。
待办事项
- 根据
Mut/Own标记重新编写,而不是单独的类型- 这需要在默认实现上使用一些非健壮的
unreached_unchecked
- 这需要在默认实现上使用一些非健壮的
- 找到一种方法来约束泛型关联迭代器类型
ExactSizedIteratorTrustedRandomAccessDoubleEndedIterator- 仍然无法将要求传播到最高特质
- 添加更多类似集合的类型,如
&str,String - 将所有内容重写为关联类型