rust - Rust,2 个带有重叠私有函数的 crate
问题描述
我在 rust 中编写了 2 个具有不同 API 的数据结构(容器),但大约 50% 的幕后功能是相似的。FWIW,第一个是存储可比较 ( std::cmp::Ord
) 数据的红黑树,另一个是具有类似 API 的列表的容器,不需要数据可比较,并使用类似于红黑树排序的缓冲区。
我认为通常两个容器数据结构都会作为库存储在 2 个不同的 crate 中。但是它们共享一些私有功能,例如树再平衡。我坚持不维护相同私有(相当复杂)代码的 2 个版本,所以我认为我剩下的唯一选择是将 2 个数据结构组合到同一个 crate 中。有没有更好的选择?
解决方案
有没有更好的选择?
是的。用管道制作第 3 个板条箱,并让您的 2 个瓷器板条箱依赖它。他们不需要公开暴露管道,保持封装。
这是比较常见的。例如,regex
(porcelain) crate 依赖于regex-syntax
(plumbing) crate,但不暴露此 crate 中的任何内容。就用户regex
而言,regex-syntax
不存在。他们甚至包装了最简单的功能。
推荐阅读
- migration - 从 Material-UI 迁移到 Material-UI v1 旁边?
- c# - 我真的需要实现 Dispose(Boolean) 吗?
- c# - 使用反射对列表进行排序以按字符串传递成员名称
- sql-server - SQL Server 2008 中的 platform() 是什么
- kubernetes - Kubernetes 滚动更新不起作用
- android - 更改 DatePicker 的边框颜色
- wordpress - Woocommerce - 删除添加到购物车的动画弹出面板
- java - Java - 我应该如何从代码中删除错误以便可以对图像进行阈值处理?
- python - 为什么只有在“静态”文件夹中才能显示图像?
- ios - 在swift4中保存label.text