继承的组件实例可以:
在 Live DSL 里 ProductCard = <Card> 这种方法一般是代表「引用」一个组件。
Live 继承系统的特点:
注意这种写法: MyButton = {{MyButton}} <Button> ,是基于已有 Button Widget 进行继承性创建自己的 MyButton 组件。
这种方式适合需要在扩展现有组件时使用。
Base/Common
前缀,变体使用功能相关的名称。Rust 结构体中的 #[deref] 属性宏:
这是一个编译期的 Rust trait 实现机制:
makepad_derive_widget
宏生成对 DrawQuad
的 Deref/DerefMut
trait 实现DrawWave
直接访问 DrawQuad
的字段和方法两者的配合使用:
#[deref]
与 Live DSL 中引用组件实例的关键区别:
#[deref]
是 Rust 编译期的类型系统特性,用于实现组件的基础功能继承,并且可以委托调用相关的方法。