## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 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!
    }