橘子味的心
标题:Rust公开函数

pub关键字用于声明的开头,以便外部函数可以访问该函数。

以下是私有规则:

  • 如果任何函数或模块是公共的,则任何父模块都可以访问它。
  • 如果任何函数或模块是私有的,则可以通过其直接父模块或父项的子模块来访问它。

  • 通过下面一个简单的例子来理解这一点:

  1. mod outer
  2. {
  3. pub fn a()
  4. {
  5. println!("function a");
  6. }
  7. fn b()
  8. {
  9. println!("function b");
  10. }
  11.  
  12. mod inner
  13. {
  14. pub fn c()
  15. {
  16. println!("function c");
  17. }
  18. fn d()
  19. {
  20. println!("function d");
  21. }
  22. }
  23. }
  24. fn main()
  25. {
  26. outer::a();
  27. outer::b();
  28. outer::inner::c();
  29. outer::inner::d();
  30. }
  31. Rust

执行上面示例代码,得到以下结果 -

在上面的示例中,main()函数是根模块,而outer模块是项目的当前根模块。 因此,main()函数可以访问outer模块。

函数a()是公共的,对outer::a()的调用不会导致任何错误,但是当main()函数试图访问outer::b()函数时,它会导致编译错误,因为它是一个私有函数。

main()函数无法访问内部模块,因为它是私有的。inner模块没有子模块,因此只能由其父模块(即outer模块)访问。