我有一个库,它需要一些东西来实现特定的特性(TQDispatch
(。
在我的主要项目中,我有一个对象向量,它们都实现了动态调度所需的不同特性(Device
(。
设备特征被声明为
pub trait Device: TQDispatch{..}
我的期望是,我可以从Device
实现者列表中获取一个项,并达到其TQDispatch
的状态,以便将其传递给库。假设任何实现Device
的东西也实现TQDispatch
,这似乎是可能的。
我可以将原始的"真实"对象转换为任意一个,但我找不到如何在这两个特征之间转换。
澄清:这些是我的项目向量中的Arc<dyn Device>
,我需要它们是库的Arc<dyn TQDispatch>
。
我可以将原始的"real"对象强制转换为任意一个,但我找不到如何在这两个特征之间进行强制转换。
您需要在";亚性状";。
Rust不是一种基于继承的语言,因此
pub trait Device: TQDispatch{..}
是指";设备需要TQDispatch";,而不是";设备扩展TQDispatch";。
如果想要Arc
输出,还需要为此创建一个全新的Arc,因为dyn Device
和dyn TQDispatch
的值完全不同。