Rust 导入模块时,结构的字段是私有的

Rust 导入模块时,结构的字段是私有的,rust,Rust,我试图将我的项目拆分为多个文件,但在将它们导入我的main.rs时遇到问题,因为它说列的字段是私有的,但我已将结构声明为公共的 src/column.rs pub struct Column { name: String, vec: Vec<i32>, } 货物建造 src/main.rs:4:15: 4:75 error: field `name` of struct `column::Column` is private src/main.rs:4 le

我试图将我的项目拆分为多个文件,但在将它们导入我的
main.rs
时遇到问题,因为它说列的字段是私有的,但我已将结构声明为公共的

src/column.rs

pub struct Column {
    name: String,
    vec: Vec<i32>,
}
货物建造

src/main.rs:4:15: 4:75 error: field `name` of struct `column::Column` is private
src/main.rs:4     let col = column::Column{name:"a".to_string(), vec:vec![1;10]};
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/main.rs:4:15: 4:75 error: field `vec` of struct `column::Column` is private
src/main.rs:4     let col = column::Column{name:"a".to_string(), vec:vec![1;10]};

您已将结构声明为public,但未将字段声明为public。要使这两个字段公开,结构声明应如下所示:

pub struct Column {
    pub name: String,
    pub vec: Vec<i32>,
}
pub结构列{
酒吧名称:String,
pub-vec:vec,
}

尝试将字段标记为公共字段:

pub struct Column {
    pub name: String,
    pub vec: Vec<i32>,
}
pub结构列{
酒吧名称:String,
pub-vec:vec,
}

Column
标记为
pub
意味着其他模块可以使用结构本身,但不一定是它的所有成员。

Ahhh,好的。我认为使用
pub-struct
会使结构的字段变得更复杂,因为这就是我从书中得到的印象。
pub struct Column {
    pub name: String,
    pub vec: Vec<i32>,
}