Rust errors / Names, paths and imports
Rust compiler error · checked with rustc 1.99.0
Rust error E0451: field `b` of struct `Foo` is private
What it meansA struct constructor with private fields was invoked.
What rustc prints
error[E0451]: field `b` of struct `Foo` is private
--> main.rs:10:25
|
10 | let f = bar::Foo{ a: 0, b: 0 }; // error: field `b` of struct `bar::Foo`
| ^ private fieldReal 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 struct constructor with private fields was invoked.
Erroneous code example:
mod bar {
pub struct Foo {
pub a: isize,
b: isize,
}
}
let f = bar::Foo{ a: 0, b: 0 }; // error: field `b` of struct `bar::Foo`
// is private
To fix this error, please ensure that all the fields of the struct are public, or implement a function for easy instantiation. Examples:
mod bar {
pub struct Foo {
pub a: isize,
pub b: isize, // we set `b` field public
}
}
let f = bar::Foo{ a: 0, b: 0 }; // ok!
Or:
mod bar {
pub struct Foo {
pub a: isize,
b: isize, // still private
}
impl Foo {
pub fn new() -> Foo { // we create a method to instantiate `Foo`
Foo { a: 0, b: 0 }
}
}
}
let f = bar::Foo::new(); // ok!From rustc --explain E0451 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
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?