【问题标题】:Calling an impl method from another impl method从另一个 impl 方法调用一个 impl 方法
【发布时间】:2015-06-21 13:18:10
【问题描述】:

似乎我不能在 Rust 中调用同一个结构的方法,或者我不明白一些东西:

struct St1 {
  aa: String
}

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

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

这是应该的吗?

【问题讨论】:

    标签: rust


    【解决方案1】:

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

    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 空格缩进。

    【讨论】:

    • 1) 如何访问aa? 2) 使用 Impl 是一种推荐的风格,还是使用“纯”函数而不将它们包装到 Impl 中更好?
    • @jawanam (1) 是另一个问题,应单独提出。 The Rust Programming Language 也涵盖了它,您应该一定阅读。 (2) 是“视情况而定”。您的功能与结构高度相关吗?如果是这样,我会使用impl
    猜你喜欢
    • 2021-12-19
    • 2016-07-02
    • 2015-06-16
    • 2022-10-20
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多