【发布时间】:2016-09-10 18:22:23
【问题描述】:
鉴于这两个结构:
pub struct RectangleRenderer {
canvas: Canvas,
origin: Point,
shape: Rectangle,
}
pub struct CircleRenderer {
canvas: Canvas,
center: Point,
shape: Circle,
}
由于我来自 Java,我会从中提取一个基类 ShapeRenderer 并将字段 canvas 和 origin 应用到其中,而特定类型将保留其名为 shape 的字段。对于这种情况,Rust 中的最佳实践是什么,因为特征只与接口类似,因此不允许使用属性/字段?
【问题讨论】:
-
我发现了一个类似的问题,其中一个答案是关于作文的 -> stackoverflow.com/questions/32736170/… .
-
或者我们可以有一个
struct Renderer<Shape>。 -
@kennytm 我不会说那是“另类” - 那是 是 组合!
-
@xetra11 为什么不用
enum Shape和ShapeRenderer和shape: Shape? -
@ljedrz 枚举带有运行时开销,而泛型则没有。我不确定这在这里是否很重要,但是(不知道更多),在我看来,这对于泛型来说是一个完美的地方。
标签: inheritance struct rust code-duplication