Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

field of struct is private when importing module

Tags:

I am trying to split my project into multiple files but I am having problems importing them into my main.rs as it says the Column's fields are private but I have declared the struct as 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!"); } 

cargo build

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]}; 
like image 333
jimjampez Avatar asked Mar 20 '15 00:03

jimjampez


1 Answers

Try labeling the fields as public:

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

Labeling Column as pub means that other modules can use the struct itself, but not necessarily all of its members.

like image 100
rcorre Avatar answered Sep 17 '22 18:09

rcorre