| Attempted to access a private field on a struct. | |
| Erroneous code example: | |
| ```compile_fail,E0616 | |
| mod some_module { | |
| pub struct Foo { | |
| x: u32, // So `x` is private in here. | |
| } | |
| impl Foo { | |
| pub fn new() -> Foo { Foo { x: 0 } } | |
| } | |
| } | |
| let f = some_module::Foo::new(); | |
| println!("{}", f.x); // error: field `x` of struct `some_module::Foo` is private | |
| ``` | |
| If you want to access this field, you have two options: | |
| 1) Set the field public: | |
| ``` | |
| mod some_module { | |
| pub struct Foo { | |
| pub x: u32, // `x` is now public. | |
| } | |
| impl Foo { | |
| pub fn new() -> Foo { Foo { x: 0 } } | |
| } | |
| } | |
| let f = some_module::Foo::new(); | |
| println!("{}", f.x); // ok! | |
| ``` | |
| 2) Add a getter function: | |
| ``` | |
| mod some_module { | |
| pub struct Foo { | |
| x: u32, // So `x` is still private in here. | |
| } | |
| impl Foo { | |
| pub fn new() -> Foo { Foo { x: 0 } } | |
| // We create the getter function here: | |
| pub fn get_x(&self) -> &u32 { &self.x } | |
| } | |
| } | |
| let f = some_module::Foo::new(); | |
| println!("{}", f.get_x()); // ok! | |
| ``` |