see可以在模块中将函数的可见性声明为pub(self)。这与没有pub属性的私有(private)函数有何不同?如果它们没有区别,为什么存在这种语法?

最佳答案

RFC 1422引入了pub(restricted)语法。它引入了两种指定可见性的新方法:

  • pub(crate):使该项目对整个当前 crate 可见,但不超过此范围。
  • pub(in path::to::module):使该项目对路径指定的模块树可见。
  • pub(self)pub(in self)的语法糖,它属于第二类:self只是类似于super::foobar::baz等的路径。这意味着,是的,pub(self)使该项目对当前模块树可见。

    因此, pub(self)等效于省略pub(self)声明。甚至说in the RFC:



    RFC还提到了为什么支持此功能:

    关于rust - `pub(self)`可见性与没有 `pub`属性有何不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50905715/

    10-12 01:24