这是我想知道的代码:(Rust Playground)
mod a {
pub mod b {
pub fn b() {
println!("b");
}
}
pub use self::b::b;
}
use a::b;
fn main() {
b();
b::b();
}
Run Code Online (Sandbox Code Playgroud)
为什么b::b()起作用?模块b和功能不应该b冲突吗?这是否意味着a::b某种程度上既是模块又是功能?
模块
b和功能不应该b冲突吗?
不,因为它们位于不同的名称空间中。他们的冲突以同样的方式“重新Ç ORD”和“ 再线”冲突英文:他们在拼写和发音相同,但意味着不同的事情,你可以告诉这是根据上下文。
您不能调用模块,因此b()不能谈论模块。函数没有子项,因此b::b不能谈论函数。当您考虑诸如此类时,这一点很重要struct S(i32);。 S是两个类型(结构类型本身)和一个函数(构造)。
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |