9个版本 (5个破坏性更新)
使用旧的Rust 2015
0.6.0 | 2017年7月18日 |
---|---|
0.5.1 | 2017年7月7日 |
0.4.0 | 2017年3月20日 |
0.3.1 | 2017年3月9日 |
0.1.0 | 2017年3月9日 |
#45 in #insert
每月下载 24 次
在 5 个 包中使用 5 个包(直接使用3个)
22KB
280 行
Push
特性
Push
特性用于收集。您可以在CC0 1.0通用许可证下自由使用和修改此代码。
用法
要在自己的项目中使用,只需将以下内容添加到您的 Cargo.toml
文件中。
[dependencies]
push-trait = "0.5"
更多正式文档,您可以在此处找到 rustdoc。
lib.rs
:
此包对大多数收集中的 push
/insert
方法进行了泛型。
泛化内容
概念上,“将”一个值推送到集合中,要么是将数据移动到集合中,例如通过 Vec::push
,要么是将数据复制到集合中,例如通过 String::push_str
。
尽管推入的值本身不需要实现 Len
,但概念上我们为它们分配一个与它们被推入的集合相关的长度。例如,推送到 Vec
的单个值将具有长度为1,而推送到 str
的 String
将具有一些字节的长度。
由于并非每个推入都是确定的,因此当推入一个值时,集合也可能“推出”一个值。例如,当FILO缓冲区满时,它会推出其最旧的项,而 HashMap
在插入新值时,会推出键的老值。
将值推送到集合中,将增加其长度等于推入值的长度,并减少等于推出值的长度。
可用的特性
在本节中,令 m
为插入项的长度,n
为集合的长度。
这些特性使您能够将数据移动到集合中。必须为任何实现这些特性的类型实现 CanPush
。
PushSorted
:O(m log n)
Insert
:O(n + m)
这些变体允许您在不释放资源的情况下移动数据。不是将数据从集合中推出去,而是将数据保留在第二个集合中。
依赖项
~42KB