2个不稳定版本
0.2.0 | 2023年8月20日 |
---|---|
0.1.0 | 2023年6月17日 |
1287 在 数据结构
每月下载量21次
54KB
1K SLoC
kovdiak-sets
使用这些强大且易于使用的集合来整理事物。0.1.0版本中实现的第一组是 Sequence
。从泛型角度来看,序列是有序元素集合,每个元素在唯一位置。 Sequence
允许在任何位置添加和删除元素,几乎无限。
最初,使用 Vec<T>
来实现序列似乎最为合适。然而,在考虑持久化序列时,实践中存在一些挑战
- 如何在数据库中存储序列并高效检索它?
- 如何高效地在序列的任意位置添加元素,例如,无需更改所有后续元素的位置?
- 如何更改单个元素的位置,而无需更改其他元素的位置?
- 如何避免需要重新平衡序列,即需要重写所有元素的位置?
- 如何将方法扩展到对序列执行数十万次操作,例如添加、移动和删除元素?
kovdiak-sets
对 Sequence
的实现目标是为了解决这些挑战。在 0.1.0 版本中,它仅提供对 Sequence
的支持。将来可能会添加其他类型的集合。
我们使用“中位分数”算法来定义 Sequence
内部的位置。中位分数是一个已知的数学概念,长期以来一直被了解和使用。这是一种通过分别取分子和分母的和来找到介于两个给定分数之间分数的方法。
这个包是 Kodiak 项目的构建块,因此包的命名。Kodiak 支持大规模的实体序列。然而,kovdiak-sets
提供的功能本身很有用,也可能对其他项目感兴趣。这就是为什么我们将其作为单独的包提供。因此,请随意使用它。如果您考虑在您的项目中使用 kovdiak-sets
但缺少某些功能或有任何其他问题,请不要犹豫,在 GitHub 上提交问题。
我们期待您的反馈。
你可能正在寻找
感想
待办:展示两个由 kodiak-sets
支持的序列示例。
在 EXAMPLES.md 中提供更多示例,并链接到它。
展示功能!
已知问题/限制
- 🏗️ 版本 0.2.0 还未为其他项目提供动力,因此 API 尚未在实践中证明其力量。
- 🚧 代码已完全覆盖单元测试,但仍然缺少一些集成测试。
- 文档仍有 一些 改进空间。
- 🐧 版本 0.2.x 仅在 Linux 上开发和测试。
路线图和未来考虑
版本 0.4.0(计划中)
- 展示如何使用此库与 MySQL 一起使用的示例。
版本 0.3.0(计划中)
- 使用 std::collections::BTreeMap 重新实现。
- 完整的文档
#![deny(missing_docs)]
。 - 展示如何使用此库与 PostgreSQL 一起使用的示例。
版本 0.2.0(已交付)
- 为
Sequence
实现Iterator
和IntoIterator
。 - 支持 serde 的
#[derive(Serialize, Deserialize)]
。 - 支持
Clone
特性。 - 引入基准测试,并在 GitHub 上发布结果(参见基准测试)。
版本 0.1.0(已交付)
- 初始发布。
- 展示基于分数定位的强大功能的示例。
- 展示如何使用此库与 SQLite 一起使用的示例。
其他资源
- 主页 polarlabs: polarlabs.io
- Crate: crates.io/kodiak-sets
- API 文档: docs.rs/kodiak-sets
贡献
有关更多详细信息,请参阅 CONTRIBUTING。
附录
Cargo Geiger 安全报告
Metric output format: x/y
x = unsafe code used by the build
y = total unsafe code found in the crate
Symbols:
🔒 = No `unsafe` usage found, declares #![forbid(unsafe_code)]
❓ = No `unsafe` usage found, missing #![forbid(unsafe_code)]
☢️ = `unsafe` usage found
Functions Expressions Impls Traits Methods Dependency
0/0 0/0 0/0 0/0 0/0 🔒 kodiak-sets 0.2.0
0/0 0/0 0/0 0/0 0/0 ❓ ├── num-integer 0.1.45
0/0 0/0 0/0 0/0 0/0 ❓ │ └── num-traits 0.2.16
0/0 0/5 0/0 0/0 0/0 ❓ └── serde 1.0.183
0/0 0/0 0/0 0/0 0/0 ❓ └── serde_derive 1.0.183
0/0 0/5 0/0 0/0 0/0
许可
根据您的选择,许可如下:
- Apache License,版本 2.0(LICENSE-APACHE 或 https://opensource.org/licenses/Apache-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
链接
https://www.figma.com/blog/realtime-editing-of-ordered-sequences/
https://crates.io/crates/fractional_index
https://ccssmathanswers.com/inserting-a-fraction-between-two-given-fractions/
依赖项
~140–375KB