如何在不定义访问字段的方法的情况下为多个结构实现一次trait方法?

时间:2018-04-07 20:44:30

标签: rust polymorphism

我有两个结构AB相似但行为重叠。我定义了两个结构实现的特征。

两个结构都具有相同的字段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

0 个答案:

没有答案