Error code E0451

A struct constructor with private fields was invoked.

Erroneous code example:

#![allow(unused)] fn main() { 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:

#![allow(unused)] fn main() { 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:

#![allow(unused)] fn main() { 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! }