本文来自喵哥的知乎:https://zhuanlan.zhihu.com/p/105733343
上次我们说到Rust里有十四种条目。还记得它们都是什么嘛,来试着默背一遍?不记得了的话,快翻回前一篇复习一下。好了,这次我们来说说条目的一些小伙伴们。
三、条目(item)的小伙伴:可见性(visibility)与简单路径
在十四种条目中,除了宏条目以外,其他十三种可以指定可见性(visibility)。宏条目有自己独特的一套规则,在这里先不说。
可见性(visibility)可以类比其他语言的“访问控制”,即,我在代码里的什么地方可以访问这个条目。上次我们说到盒(crate)具有一个最外层的匿名模块(module)条目,模块条目可以包含条目,形成一棵条目树。在这里,可见性就是在划定在条目树上的。
默认的,也是最严格的是“私有”,pub(in self)
,可以不写出来,意思是“以当前模块为根的子树可以访问”;最宽松的是“公有”,pub
,意思是“无限制,哪里都可以访问”。
其他选择就是当前模块的父节点条目、父节点的父节点条目,等等,一直到盒最外层的匿名模块条目。这条通路上的每个模块条目都可以被选定,意思是“以这个模块为根的子树可以访问”,语法是pub(in <path>)
,例如pub(in crate::xxx::yyy)
就是“以crate::xxx::yyy
为根的子树可以访问”。
另外Rust也提供了几个简写形式:pub(crate)
相