假设我有一个带有内部公共结构Bar
的模块foo
现在,Bar
有一些函数应该是私有的,假设它们是相当低级的函数,需要构建一些更大的公共函数。
假设我们有以下文件结构
src/
├─ foo/
│ ├─ private_module.rs // private module with private functions
├─ foo.rs
├─ lib.rs // Public API
在crate::foo::private_module
中,我们有以下内容
impl Bar {
fn my_private_function() -> () {}
}
在crate::foo
中我们有以下内容
mod private_module;
struct Bar;
impl Bar {
pub fn my_public_function(&self) -> () {
self.my_private_function() // E0624! private associated function
}
}
正确的方法是什么?唯一的解决方法是将这些私有函数公开,这将在这个结构体的公共API中暴露它们,尽管impl块位于私有模块中!
我是否应该将低级私有函数放在模块的根,而将高级公共函数放在它们自己的子模块中?
1条答案
按热度按时间mqkwyuun1#
Visibility and Privacy文档有许多不同的可见性级别可以使用,例如
pub(super)
只向其父模块公开项目。