可见性

模块是一种隐私边界:

  • 默认情况下,模块项是私有的(隐藏实现详情)。
  • 父项和同级子项始终可见。
  • 换言之,如果某个项在模块“foo”中可见,那么该项在“foo”的所有后代中均可见。
  1. mod outer {
  2. fn private() {
  3. println!("outer::private");
  4. }
  5. pub fn public() {
  6. println!("outer::public");
  7. }
  8. mod inner {
  9. fn private() {
  10. println!("outer::inner::private");
  11. }
  12. pub fn public() {
  13. println!("outer::inner::public");
  14. super::private();
  15. }
  16. }
  17. }
  18. fn main() {
  19. outer::public();
  20. }

This slide should take about 5 minutes.

  • 使用“pub”关键字将模块设为公开。

此外,您还可以使用高级“pub(…)”说明符来限制公开可见的范围。

  • 请参阅 Rust 参考
  • 配置“pub(crate)”可见性是一种常见模式。
  • 您可以为特定路径授予可见性,这种情况不太常见。
  • 在任何情况下,都必须向祖先模块(及其所有后代)授予可见性。