Advertisement
Guest User

Untitled

a guest
Jul 12th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. fn function() {
  2. println!("called `function()`");
  3. }
  4.  
  5. mod cool {
  6. pub fn function() {
  7. println!("called `cool::function()`");
  8. }
  9. }
  10.  
  11. mod my {
  12. fn function() {
  13. println!("called `my::function()`");
  14. }
  15.  
  16. mod cool {
  17. pub fn function() {
  18. println!("called `my::cool::function()`");
  19. }
  20. }
  21.  
  22. pub fn indirect_call() {
  23. // 让我们从这个作用域中访问所有名为 `function` 的函数!
  24. print!("called `my::indirect_call()`, that\n> ");
  25.  
  26. // `self` 关键字表示当前的模块作用域——在这个例子是 `my`。
  27. // 调用 `self::function()` 和直接调用 `function()` 都得到相同的结果,
  28. // 因为他们表示相同的函数。
  29. self::function();
  30. function();
  31.  
  32. // 我们也可以使用 `self` 来访问 `my` 内部的另一个模块:
  33. self::cool::function();
  34.  
  35. // `super` 关键字表示父作用域(在 `my` 模块外面)。
  36. super::function();
  37.  
  38. // 这将在 *crate* 作用域内绑定 `cool::function` 。
  39. // 在这个例子中,crate 作用域是最外面的作用域。
  40. {
  41. use cool::function as root_function;
  42. root_function();fn function() {
  43. println!("called `function()`");
  44. }
  45.  
  46. mod cool {
  47. pub fn function() {
  48. println!("called `cool::function()`");
  49. }
  50. }
  51.  
  52. mod my {
  53. fn function() {
  54. println!("called `my::function()`");
  55. }
  56.  
  57. mod cool {
  58. pub fn function() {
  59. println!("called `my::cool::function()`");
  60. }
  61. }
  62.  
  63. pub fn indirect_call() {
  64. // 让我们从这个作用域中访问所有名为 `function` 的函数!
  65. print!("called `my::indirect_call()`, that\n> ");
  66.  
  67. // `self` 关键字表示当前的模块作用域——在这个例子是 `my`。
  68. // 调用 `self::function()` 和直接调用 `function()` 都得到相同的结果,
  69. // 因为他们表示相同的函数。
  70. self::function();
  71. function();
  72.  
  73. // 我们也可以使用 `self` 来访问 `my` 内部的另一个模块:
  74. self::cool::function();
  75.  
  76. // `super` 关键字表示父作用域(在 `my` 模块外面)。
  77. super::function();
  78.  
  79. // 这将在 *crate* 作用域内绑定 `cool::function` 。
  80. // 在这个例子中,crate 作用域是最外面的作用域。
  81. {
  82. use cool::function as root_function;
  83. root_function();
  84. }
  85. }
  86. }
  87.  
  88. fn main() {
  89. my::indirect_call();
  90. }
  91. fn function() {
  92. println!("called `function()`");
  93. }
  94.  
  95. mod cool {
  96. pub fn function() {
  97. println!("called `cool::function()`");
  98. }
  99. }
  100.  
  101. mod my {
  102. fn function() {
  103. println!("called `my::function()`");
  104. }
  105.  
  106. mod cool {
  107. pub fn function() {
  108. println!("called `my::cool::function()`");
  109. }
  110. }
  111.  
  112. pub fn indirect_call() {
  113. // 让我们从这个作用域中访问所有名为 `function` 的函数!
  114. print!("called `my::indirect_call()`, that\n> ");
  115.  
  116. // `self` 关键字表示当前的模块作用域——在这个例子是 `my`。
  117. // 调用 `self::function()` 和直接调用 `function()` 都得到相同的结果,
  118. // 因为他们表示相同的函数。
  119. self::function();
  120. function();
  121.  
  122. // 我们也可以使用 `self` 来访问 `my` 内部的另一个模块:
  123. self::cool::function();
  124.  
  125. // `super` 关键字表示父作用域(在 `my` 模块外面)。
  126. super::function();
  127.  
  128. // 这将在 *crate* 作用域内绑定 `cool::function` 。
  129. // 在这个例子中,crate 作用域是最外面的作用域。
  130. {
  131. use cool::function as root_function;
  132. root_function();
  133. }
  134. }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement