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_capacity
ContiguousCollection
:连续集合,就像内存的连续区域。例如Vec::as_slice
SequentialCollection
:顺序集合,你可以单向遍历它,并在末尾进行修改。例如:VecDeque::push_back
DoubleEndedCollection
:双端集合,你可以在两端执行类似顺序的操作。例如:LinkedList<T>::pop_front
RandomAccessCollection
:随机访问集合,你可以通过索引进行访问。例如: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
- 这需要在默认实现上使用一些非健壮的
- 找到一种方法来约束泛型关联迭代器类型
ExactSizedIterator
TrustedRandomAccess
DoubleEndedIterator
- 仍然无法将要求传播到最高特质
- 添加更多类似集合的类型,如
&str
,String
- 将所有内容重写为关联类型