导入模块时结构字段是私有的
field of struct is private when importing module
我试图将我的项目拆分成多个文件,但我在将它们导入我的 main.rs
时遇到问题,因为它说列的字段是私有的,但我已将结构声明为 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]};
您已将结构声明为 public,但未声明字段。要使两个字段 public,结构声明应如下所示:
pub struct Column {
pub name: String,
pub vec: Vec<i32>,
}
尝试将字段标记为 public:
pub struct Column {
pub name: String,
pub vec: Vec<i32>,
}
将 Column
标记为 pub
意味着其他模块可以使用该结构本身,但不一定是其所有成员。
我试图将我的项目拆分成多个文件,但我在将它们导入我的 main.rs
时遇到问题,因为它说列的字段是私有的,但我已将结构声明为 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]};
您已将结构声明为 public,但未声明字段。要使两个字段 public,结构声明应如下所示:
pub struct Column {
pub name: String,
pub vec: Vec<i32>,
}
尝试将字段标记为 public:
pub struct Column {
pub name: String,
pub vec: Vec<i32>,
}
将 Column
标记为 pub
意味着其他模块可以使用该结构本身,但不一定是其所有成员。