从另一个 impl 方法调用一个 impl 方法

4 rust

似乎我无法在 Rust 中调用相同结构的方法,或者我可能不明白某些事情:

struct St1 {
  aa: String
}

impl St1 {
  pub fn method1() -> String {
    //....
    method2() //error: unresolved name method2
  }

  pub fn method2() -> String {
    //....
  }
}
Run Code Online (Sandbox Code Playgroud)

这是应该的样子吗?

She*_*ter 9

您需要完全限定您正在调用的方法。

struct St1 {
    aa: String
}

impl St1 {
    pub fn method1() -> String {
        St1::method2()
    }

    pub fn method2() -> String {
        unimplemented!()
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您的意思是这些方法是实例方法,那么您仍然必须完全限定它们,而是使用self

struct St1 {
    aa: String
}

impl St1 {
    pub fn method1(&self) -> String {
        self.method2()
    }

    pub fn method2(&self) -> String {
        unimplemented!()
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,Rust 风格是 4 个空格的缩进。

  • @jawanam (1) 是另一个问题,应该单独提问。[*The Rust Programming Language*](http://doc.rust-lang.org/book/) 也涵盖了它,您应该**绝对**阅读。(2) 是“视情况而定”。您的功能是否与结构高度相关?如果是这样,我会使用`impl`。 (3认同)