Error code E0616

Attempted to access a private field on a struct.

Erroneous code example:

#![allow(unused)] fn main() { mod some_module { pub struct Foo { x: u32, // So `x` is private in here. } impl Foo { pub fn new() -> Foo { Foo { x: 0 } } } } let f = some_module::Foo::new(); println!("{}", f.x); // error: field `x` of struct `some_module::Foo` is private }

If you want to access this field, you have two options:

  1. Set the field public:
#![allow(unused)] fn main() { mod some_module { pub struct Foo { pub x: u32, // `x` is now public. } impl Foo { pub fn new() -> Foo { Foo { x: 0 } } } } let f = some_module::Foo::new(); println!("{}", f.x); // ok! }
  1. Add a getter function:
#![allow(unused)] fn main() { mod some_module { pub struct Foo { x: u32, // So `x` is still private in here. } impl Foo { pub fn new() -> Foo { Foo { x: 0 } } // We create the getter function here: pub fn get_x(&self) -> &u32 { &self.x } } } let f = some_module::Foo::new(); println!("{}", f.get_x()); // ok! }