Rust errors / Types and traits
Rust compiler error · checked with rustc 1.99.0
Rust error E0449: visibility qualifiers are not permitted here
What it meansA 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.
What rustc prints
error[E0449]: visibility qualifiers are not permitted here --> main.rs:8:5 | 8 | pub Qux, // error: visibility qualifiers are not permitted here | ^^^ help: remove the qualifier | = note: enum variants and their fields always share the visibility of the enum they are in
Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
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:
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() {}
}From rustc --explain E0449 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0308mismatched types
- E0277the trait bound is not satisfied
- E0599no method named X found in the current scope
- E0433failed to resolve
- E0438const `BAR` is not a member of trait `Foo`
- E0446private type `Bar` in public interface
- E0512cannot transmute between types of different sizes, or dependently-sized types
- E0520`fly` specializes an item from a parent `impl`, but that item is not marked `default`
Up next
Often hit nextE0308: mismatched typesA related error from the same family.Read it next →Did this answer your question?