在 Rust 中,同一模块(同级)中定义的项可以相互访问,因此我们可以在
Config
内访问 main()
。然而,既然结构体字段默认是 private 的,为什么不用 pub
关键字仍然可以直接访问它们呢?
struct Config {
query: String,
file_path: String,
}
fn main() {
let _ = Config { query: String::from("abc"), file_path: String::from("dt.txt") } ;
}
它与嵌套
mod
不同,其中私有内部 mod
无法被其父级的兄弟姐妹访问,如下所示。
mod m1 {
mod m2 {
...
}
}
fn main() {
// we can access m1 here but not m1::m2.
}
这与任何但是,考虑到结构体字段默认是私有的
项目的默认可见性完全相同,默认情况下它们也是私有的。 Rust 中的私有意味着只有定义模块才能访问它,不多也不少。