结构中的自定义getter和setter

アレッ*_*ックス 5 rust

如何在结构中创建自定义 getter或setter:

struct MyStruct {
  field1: int
}

impl MyStruct {

  //getter
  fn field1(self) -> int {
    // some calculations....
    // return the value...

  }

  //or
  //setter
  fn field1(self, value) {

  }

}
Run Code Online (Sandbox Code Playgroud)

什么是真正的Rust方式呢?

Chr*_*gan 10

Rust目前没有像Python或C♯属性那样的东西; foo.bar只进行字段访问,从不进行方法调用.通常是有意义的只是让业界人士,但如果你不想这样做,为了安全或者需要有副作用,其原因fn field1(&self) -> intfn set_field1(&mut self, value: int)是可以接受的.

  • @AlexanderSupertramp,是的,Rust 只有模块级隐私。如果您需要更细粒度的隐私控制,请将您的程序拆分为更小的模块。 (2认同)
  • “公众只能阅读”怎么样?这有时会很有用。 (2认同)