Mar*_*cht 4 private traits rust
我有一个带有实现的结构,该实现具有访问结构的私有状态的函数.
struct Example {...}
impl Example {
fn test(&self) -> .. {...}
}
Run Code Online (Sandbox Code Playgroud)
在另一个模块中的其他地方存在另一个特征:
trait ExampleTrait {
fn test(&self) -> .. {...}
}
Run Code Online (Sandbox Code Playgroud)
现在我想实现ExampleTrait的Example结构和测试方法转发到测试impl的结构.
以下代码:
impl ExampleTrait for Example {
fn test(&self) -> .. {
self.test()
}
}
Run Code Online (Sandbox Code Playgroud)
显然是一个无限的递归调用.我不能只重复原始测试的主体,因为我无法访问Example此处的私有状态.
有没有其他方法可以做到这一点,除了重命名一个功能或在Example公共场所制作字段?
您可以使用完全限定语法来消除使用哪种方法的歧义:
impl ExampleTrait for Example {
fn test(&self) {
Example::test(self) // no more ambiguity
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |