#collection #clojure #protocols

protocoll

受 Clojure 启发的 Rust 集合协议

8 个版本

使用旧的 Rust 2015

0.3.1 2016 年 12 月 8 日
0.3.0 2016 年 11 月 28 日
0.2.2 2016 年 11 月 27 日
0.1.2 2016 年 11 月 14 日

#771 in 科学

MIT 许可证

37KB
601

protocoll

rust 集合提供一些基本协议及其实现。

clojure 的设计启发,尽管不是持久的。

cargo crate

API 文档

这些协议旨在通过像 clojure 那样在几个集合上使用少量函数来简化函数式编程,来处理 rust 语言中不可避免的复杂性。

它们通过只支持少量函数来实现这一目标,这些函数要么接受类型 T 用于创建,要么接受类型 &T 用于利用,并拒绝那些接受类型 &mut T 用于破坏性修改的“丑陋”操作。

然而,出于效率原因,我发现我不得不支持这些“丑陋”操作。例如,在没有先删除条目然后重新插入条目的情况下,我无法消耗存储在映射中的值以生成相同类型的新值来替换旧值。另一方面,“丑陋”操作可以直接在原地修改值。所以如果你知道如何在不引起 rust 抱怨的情况下暂时移出一个值,请告诉我 :)

无运行时依赖