我有一个带有实现的结构,该实现具有访问结构的私有状态的函数。
struct Example {...}
impl Example {
fn test(&self) -> .. {...}
}
另一个模块中的其他地方存在另一个特征:
trait ExampleTrait {
fn test(&self) -> .. {...}
}
现在我想为ExampleTrait
结构实现Example
并将测试方法转发给结构的测试impl
。
以下代码:
impl ExampleTrait for Example {
fn test(&self) -> .. {
self.test()
}
}
显然是无限递归调用。我不能只重复原始测试的主体,因为我在这里无法访问私有状态Example
。
除了重命名一个函数或在Example
公开中创建字段外,还有其他方法吗?
答案 0 :(得分:8)
您可以使用fully-qualified syntax来消除使用哪种方法的歧义:
impl ExampleTrait for Example {
fn test(&self) {
Example::test(self) // no more ambiguity
}
}