寻找正确的方法
if(self.MyProperty) { /* ... */ }
错误:尝试访问类型
MyProperty
上的字段MyType
,但未找到具有该名称的字段
或
if(self.MyMethod){ /* ... */ }
错误:尝试在类型
上获取方法MyMethod
MyType
的值
作为最后的手段,至少如何检查Trait是否已实施?
答案 0 :(得分:2)
Rust中不存在这个概念。虽然通过Any
有一些有限的向下转换功能,但这应该作为最后的手段。你应该做的是创造一个新的特征,为你揭示所有这些决定。
重用my_method
方法的示例:
trait YourTrait {
fn try_my_method(&self, arg: SomeArg) -> Option<MyMethodResult> {
None
}
}
impl YourTrait for SomeType {
fn try_my_method(&self, arg: SomeArg) -> Option<MyMethodResult> {
Some(self.my_method(arg))
}
}
在您的代码中,您可以调用
if let Some(result) = self.try_my_method() {
/* ... */
}