导入模块时,struct的字段是私有的

时间:2015-03-20 00:17:35

标签: rust

我正在尝试将我的项目拆分为多个文件,但我将问题导入我的main.rs时遇到问题,因为它说Column的字段是私有的,但我已将结构声明为public。

的src / column.rs

pub struct Column {
    name: String,
    vec: Vec<i32>,
}

的src / main.rs

pub mod column;

fn main() {
    let col = column::Column{name:"a".to_string(), vec:vec![1;10]};
    println!("Hello, world!");
}

货物建造

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]};

2 个答案:

答案 0 :(得分:22)

尝试将字段标记为公开:

pub struct Column {
    pub name: String,
    pub vec: Vec<i32>,
}

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

答案 1 :(得分:12)

您已将结构声明为公共结构,但不是字段。要使两个字段都公开,struct声明应如下所示:

pub struct Column {
    pub name: String,
    pub vec: Vec<i32>,
}