为什么mian.rs中定义的结构体的字段可以在main函数中访问而无需将其声明为pub?

问题描述 投票:0回答:1

在 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 scope
1个回答
0
投票

但是,考虑到结构体字段默认是私有的

这与任何

项目的默认可见性完全相同,默认情况下它们也是私有的。 Rust 中的私有意味着只有定义模块才能访问它,不多也不少。

© www.soinside.com 2019 - 2024. All rights reserved.