我在用 rust 写2个具有不同API的数据结构(容器),但是幕后功能的大约50%是相似的。 FWIW,第一个是存储可比较(std::cmp::Ord
)数据的红黑树,另一个是带有类似API的列表的容器,不需要数据是可比较的,并使用与红黑树类似的排序的缓冲区。
我认为通常两个容器数据结构都将以库的形式存储在2个不同的 crate 中。但是它们共享一些私有(private)功能,例如树重新平衡。我坚持不维护同一私有(private)(相当复杂)代码的2个版本,因此我认为剩下的唯一选择是将2个数据结构合并到同一个包装箱中。有什么更好的选择吗?
最佳答案
是的。用该水管制作一个第3个 crate ,并使其依赖2个瓷 crate 。他们不需要公开管道,保持封装状态。
这是很常见的。例如,regex
(陶瓷) crate 取决于regex-syntax
(管道) crate ,但不暴露此 crate 中的任何物品。就regex
的用户而言,regex-syntax
不存在。他们走到wrapping even the simplest functions。
关于rust - rust ,2个 crate ,具有重叠的私有(private)功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57538878/