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

时间:2015-06-21 13:18:10

标签: rust

似乎我不能在Rust中调用相同结构的方法,或者我不明白:

struct St1 {
  aa: String
}

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

  pub fn method2() -> String {
    //....
  }
}

这应该是怎么回事?

1 个答案:

答案 0 :(得分:4)

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

struct St1 {
    aa: String
}

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

    pub fn method2() -> String {
        unimplemented!()
    }
}

如果您认为这些方法是实例方法,那么您仍然必须完全限定它们,但使用self代替:

struct St1 {
    aa: String
}

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

    pub fn method2(&self) -> String {
        unimplemented!()
    }
}

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

相关问题