我的粗浅看法,rust就是故意不让你用继承,尤其是含有数据属性(struct)的继承。
一个凑合的办法是把struct里的数据属性在trait里重写一遍get/set方法,这样trait从接口意义上看基本就能等价于你原来的c++ class了。缺点是每次impl这个trait都要写一大堆重复的get/set。
其实这就是所谓的“组合优于继承”嘛。写起来繁琐,用起来尤其是改起来方便。越来越多的oop语言现在也都倾向于主张这么搞了。
【 在 RunningOn 的大作中提到: 】
: 目前我能想到的比较简单的办法是在trait里将struct的引用作为参数。涉及到lifetime就会比较复杂。
: 并不是一定要坚持这样的设计模式,有其它的好用的设计模式也是OK的。
--
FROM 123.120.189.*