Rust errors / Names, paths and imports
Rust compiler error · checked with rustc 1.99.0
Rust error E0624: method `method` is private
What it meansA private item was used outside of its scope.
What rustc prints
error[E0624]: method `method` is private
--> main.rs:12:5
|
7 | fn method(&self) {}
| ---------------- private method defined here
...
12 | foo.method(); // error: method `method` is private
| ^^^^^^ private methodReal 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 private item was used outside of its scope.
Erroneous code example:
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!From rustc --explain E0624 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0425cannot find value in this scope
- E0603is private
- E0432unresolved import
- E0005refutable pattern in local binding
- E0616field `x` of struct `Foo` is private
- E0639This error indicates that the struct, enum or enum variant cannot be instantiated from outside of the defining crate as it has been marked as `non_exhaustive` and as such more fields/variants may be added in future that could cause adverse side effects for this code
- E0648`export_name` may not contain null characters
Up next
Often hit nextE0425: cannot find value in this scopeA related error from the same family.Read it next →Did this answer your question?