Rust errors / Types and traits
Rust compiler error · checked with rustc 1.99.0
Rust error E0364: `foo` is private, and cannot be re-exported
What it meansPrivate items cannot be publicly re-exported. This error indicates that you attempted to pub use a type or value that was not itself public.
What rustc prints
error[E0364]: `foo` is private, and cannot be re-exported --> main.rs:5:17 | 5 | pub use super::foo; // error! | ^^^^^^^^^^ | note: consider marking `foo` as `pub` in the imported module --> main.rs:5:17 | 5 | pub use super::foo; // error! | ^^^^^^^^^^
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
Private items cannot be publicly re-exported. This error indicates that you attempted to pub use a type or value that was not itself public.
Erroneous code example:
mod a {
fn foo() {}
mod a {
pub use super::foo; // error!
}
}
The solution to this problem is to ensure that the items that you are re-exporting are themselves marked with pub:
mod a {
pub fn foo() {} // ok!
mod a {
pub use super::foo;
}
}
See the Use Declarations section of the reference for more information on this topic.
From rustc --explain E0364 (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
- E0326implemented const `BAR` has an incompatible type for trait
- E0328explicit impls for the `Unsize` trait are not permitted
- E0366`Drop` impls cannot be specialized
- E0367`Drop` impl requires `T: Foo` but the struct it is implemented for does not
Up next
Often hit nextE0308: mismatched typesA related error from the same family.Read it next →Did this answer your question?