Rust 为什么具有子模块和名称冲突的函数的模块可以工作?
下面是我想知道的代码:() 为什么Rust 为什么具有子模块和名称冲突的函数的模块可以工作?,rust,Rust,下面是我想知道的代码:() 为什么b::b()起作用?模块b和功能b是否应该冲突?这是否意味着a::b在某种程度上既是一个模块又是一个函数 模块b和功能b是否应该冲突 不,因为它们在不同的名称空间中。它们的冲突方式与英语中“record”和“record”的冲突方式相同:它们的拼写和发音相同,但意思不同,你可以根据上下文来判断哪个是 您不能调用模块,因此b()不能谈论模块。函数没有子项,因此b::b不能谈论函数。当你考虑诸如结构(s)(i32)时,这是很重要的;代码>S既是一种类型(结构类型本身
b::b()
起作用?模块b
和功能b
是否应该冲突?这是否意味着a::b
在某种程度上既是一个模块又是一个函数
模块b
和功能b
是否应该冲突
不,因为它们在不同的名称空间中。它们的冲突方式与英语中“record”和“record”的冲突方式相同:它们的拼写和发音相同,但意思不同,你可以根据上下文来判断哪个是
您不能调用模块,因此b()
不能谈论模块。函数没有子项,因此b::b
不能谈论函数。当你考虑诸如<代码>结构(s)(i32)时,这是很重要的;代码>S
既是一种类型(结构类型本身)又是一种函数(构造函数)。同样有效。
mod a {
pub mod b {
pub fn b() {
println!("b");
}
}
pub use self::b::b;
}
use a::b;
fn main() {
b();
b::b();
}