| A private item was used outside of its scope. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0624 |
| mod inner { |
| pub struct Foo; |
| |
| impl Foo { |
| fn method(&self) {} |
| } |
| } |
| |
| let foo = inner::Foo; |
| foo.method(); // error: method `method` is private |
| ``` |
| |
| Two possibilities are available to solve this issue: |
| |
| 1. Only use the item in the scope it has been defined: |
| |
| ``` |
| mod inner { |
| pub struct Foo; |
| |
| impl Foo { |
| fn method(&self) {} |
| } |
| |
| pub fn call_method(foo: &Foo) { // We create a public function. |
| foo.method(); // Which calls the item. |
| } |
| } |
| |
| let foo = inner::Foo; |
| inner::call_method(&foo); // And since the function is public, we can call the |
| // method through it. |
| ``` |
| |
| 2. Make the item public: |
| |
| ``` |
| mod inner { |
| pub struct Foo; |
| |
| impl Foo { |
| pub fn method(&self) {} // It's now public. |
| } |
| } |
| |
| let foo = inner::Foo; |
| foo.method(); // Ok! |
| ``` |