我有两个结构A
和B
相似但行为重叠。我定义了两个结构实现的特征。
两个结构都具有相同的字段a
,并且特征中定义的方法is(&self)
在两个结构中具有完全相同的实现,所以我想将实现移动到特征,而不是重复两个结构中的代码。
但是,is(&self)
方法需要访问a
的字段&self
才能计算返回值。
这里是一些问题的示例代码:
trait T {
fn is(&self) -> bool;
// other methods
}
pub struct A {
a: i32,
}
impl T for A {
fn is(&self) -> bool {
// This calculation is actually more complex
self.a > 0
}
// other methods of T
}
pub struct B {
a: i32,
// more fields
}
impl T for B {
fn is(&self) -> bool {
// This calculation is actually more complex
self.a > 0
}
// other methods of T, that are implemented differently from A's implementations
}
我如何为结构is(&self)
和A
实施一次B
方法,而无需在特征中定义方法来访问字段a
?