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个)

CC0 许可证

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,而推送到 strString 将具有一些字节的长度。

由于并非每个推入都是确定的,因此当推入一个值时,集合也可能“推出”一个值。例如,当FILO缓冲区满时,它会推出其最旧的项,而 HashMap 在插入新值时,会推出键的老值。

将值推送到集合中,将增加其长度等于推入值的长度,并减少等于推出值的长度。

可用的特性

在本节中,令 m 为插入项的长度,n 为集合的长度。

这些特性使您能够将数据移动到集合中。必须为任何实现这些特性的类型实现 CanPush

这些变体允许您在不释放资源的情况下移动数据。不是将数据从集合中推出去,而是将数据保留在第二个集合中。

依赖项

~42KB