我see可以在模块中将函数的可见性声明为pub(self)
。这与没有pub
属性的私有(private)函数有何不同?如果它们没有区别,为什么存在这种语法?
最佳答案
RFC 1422引入了pub(restricted)
语法。它引入了两种指定可见性的新方法:
pub(crate)
:使该项目对整个当前 crate 可见,但不超过此范围。 pub(in path::to::module)
:使该项目对路径指定的模块树可见。 pub(self)
是pub(in self)
的语法糖,它属于第二类:self
只是类似于super
,::foo
,bar::baz
等的路径。这意味着,是的,pub(self)
使该项目对当前模块树可见。因此,
pub(self)
等效于省略pub(self)
声明。甚至说in the RFC:RFC还提到了为什么支持此功能:
关于rust - `pub(self)`可见性与没有 `pub`属性有何不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50905715/