1个不稳定版本

0.1.0 2022年8月28日

#1386数据结构

Apache-2.0

19KB
193

FOSSA Status

unempty

Rust的非空数据结构。

其他crate更专注于单个数据结构(例如 VecHashMap)。本crate的目标是包含所有常用数据结构的非空实现。

当然,“所有”是相当多的。随着我需要非空数据结构,我会逐渐添加。如果您需要,PR非常欢迎!

原因

在类型系统中表达约束非常强大,非空数据结构也不例外。

一个不可能为空的数据结构可以解放开发者,使他们无需检查空情况,并允许他们在类型中而不是仅仅在运行时或在他们的文档中表达期望。

这也使得一些便利功能甚至性能改进成为可能。例如,一个 unempty::Vec 总是能满足对 firstlast 的调用,因此这些不需要是 Option

路线图 & 版本控制

在API稳定之前,这个crate现在使用预发布semver(0.x.y)。一旦所有常用数据结构的常用方法都存在,它将被设置为 1.0.0 以提供向前兼容性的清晰度。

“常用”当然是主观的,但通常意味着

  • 常用数据结构:标准库中的 VecHashSetHashMapVecDequeue
  • 常用方法:向、从、遍历这些数据结构的基本方法,以及与“常用数据结构”列表之间的转换。

最初不计划提供不稳定/夜间构建版本API。更复杂的API(例如,try_reserve)将根据需要实现。如果您需要这些方法之一,请提交PR或问题!

灵感来源

依赖项

~310–770KB
~18K SLoC