| A struct constructor with private fields was invoked. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0451 |
| mod bar { |
| pub struct Foo { |
| pub a: isize, |
| b: isize, |
| } |
| } |
| |
| let f = bar::Foo{ a: 0, b: 0 }; // error: field `b` of struct `bar::Foo` |
| // is private |
| ``` |
| |
| To fix this error, please ensure that all the fields of the struct are public, |
| or implement a function for easy instantiation. Examples: |
| |
| ``` |
| mod bar { |
| pub struct Foo { |
| pub a: isize, |
| pub b: isize, // we set `b` field public |
| } |
| } |
| |
| let f = bar::Foo{ a: 0, b: 0 }; // ok! |
| ``` |
| |
| Or: |
| |
| ``` |
| mod bar { |
| pub struct Foo { |
| pub a: isize, |
| b: isize, // still private |
| } |
| |
| impl Foo { |
| pub fn new() -> Foo { // we create a method to instantiate `Foo` |
| Foo { a: 0, b: 0 } |
| } |
| } |
| } |
| |
| let f = bar::Foo::new(); // ok! |
| ``` |