Rust,2 个具有重叠私有(private)函数的 crate

标签 rust private encapsulation organization code-organization

我正在用 Rust 编写 2 个具有不同 API 的数据结构(容器),但大约 50% 的幕后功能是相似的。 FWIW,第一个是存储可比较 (std::cmp::Ord) 数据的红黑树,另一个是具有类似 API 的列表的容器,不需要数据可比较,并使用类似于红黑树排序的缓冲区。

我认为通常两种容器数据结构都将作为库存储在 2 个不同的 crate 中。但它们共享一些私有(private)功能,如树重新平衡。我坚持不维护相同私有(private)(相当复杂)代码的 2 个版本,所以我认为我剩下的唯一选择是将 2 个数据结构组合到同一个 crate 中。有没有更好的选择?

最佳答案

Is there any better option?

是的。用管道做第三个 crate ,让你的 2 个瓷器 crate 依赖它。他们不需要公开管道,保持封装。

这很常见。例如,regex(瓷器)crate 依赖于 regex-syntax(plumbing)crate,但不公开此 crate 中的任何内容。对于 regex 的用户来说,regex-syntax 是不存在的。他们走到了wrapping even the simplest functions .

关于Rust,2 个具有重叠私有(private)函数的 crate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57538878/

相关文章:

rust - Rust 语言中的 &'a 是什么

Rust 中的 Unix 选择系统调用

rust - 为什么 slice 可以直接调用 into_iter 而不会 abort?

Javascript 公共(public)/私有(private)变量

c# - 创建简单高效值类型的模式

java - 什么时候应该使用封装?

rust - 如何有效地处理具有不同混凝土类型的泛型类型的 rust ?

c++ - 覆盖后调用原始继承函数

python - python类中私有(private)变量的实际实现

python - 如何在 Python 中将一个类的对象的创建限制为另一个类的实例?