|
|
@ -206,7 +206,7 @@ impl<T> Screen<T>
|
|
|
|
|
|
|
|
|
|
|
|
上面的 `Screen` 的列表中,存储了类型为 `T` 的元素,然后在 `Screen` 中使用特征约束让 `T` 实现了 `Draw` 特征,进而可以调用 `draw` 方法。
|
|
|
|
上面的 `Screen` 的列表中,存储了类型为 `T` 的元素,然后在 `Screen` 中使用特征约束让 `T` 实现了 `Draw` 特征,进而可以调用 `draw` 方法。
|
|
|
|
|
|
|
|
|
|
|
|
但是这种写法限制了 `Screen` 实例的 `Vec<T>` 中的每个元素必须是 `Button` 类型或者全是 `SelectBox` 类型。如果只需要同质(相同类型)集合,更倾向于这种写法:使用泛型和 特征约束,因为实现更清晰,且性能更好(特征对象,需要在运行时从 `vtable` 动态查找需要调用的方法)。
|
|
|
|
但是这种写法限制了 `Screen` 实例的 `Vec<T>` 中的每个元素必须是 `Button` 类型或者全是 `SelectBox` 类型。如果只需要同质(相同类型)集合,更倾向于采用泛型+特征约束这种写法,因其实现更清晰,且性能更好(特征对象,需要在运行时从 `vtable` 动态查找需要调用的方法)。
|
|
|
|
|
|
|
|
|
|
|
|
现在来运行渲染下咱们精心设计的 UI 组件列表:
|
|
|
|
现在来运行渲染下咱们精心设计的 UI 组件列表:
|
|
|
|
|
|
|
|
|
|
|
|