| A visibility qualifier was used where one is not permitted. Visibility |
| qualifiers are not permitted on enum variants, trait items, impl blocks, and |
| extern blocks, as they already share the visibility of the parent item. |
| |
| Erroneous code examples: |
| |
| ```compile_fail,E0449 |
| struct Bar; |
| |
| trait Foo { |
| fn foo(); |
| } |
| |
| enum Baz { |
| pub Qux, // error: visibility qualifiers are not permitted here |
| } |
| |
| pub impl Bar {} // error: visibility qualifiers are not permitted here |
| |
| pub impl Foo for Bar { // error: visibility qualifiers are not permitted here |
| pub fn foo() {} // error: visibility qualifiers are not permitted here |
| } |
| ``` |
| |
| To fix this error, simply remove the visibility qualifier. Example: |
| |
| ``` |
| struct Bar; |
| |
| trait Foo { |
| fn foo(); |
| } |
| |
| enum Baz { |
| // Enum variants share the visibility of the enum they are in, so |
| // `pub` is not allowed here |
| Qux, |
| } |
| |
| // Directly implemented methods share the visibility of the type itself, |
| // so `pub` is not allowed here |
| impl Bar {} |
| |
| // Trait methods share the visibility of the trait, so `pub` is not |
| // allowed in either case |
| impl Foo for Bar { |
| fn foo() {} |
| } |
| ``` |