作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
Why doesn't Rust support trait object upcasting?
(4 个回答)
1年前关闭。
我有一个库需要实现特定特征( TQDispatch
)。
在我的主要项目中,我有一个对象向量,它们都实现了动态调度所需的不同特征( Device
)。
声明了设备特征
pub trait Device: TQDispatch{..}
我的期望是我可以从
Device
的列表中取出一个项目。实现者并获取其
TQDispatch
-ness,以便我可以将其传递给图书馆。鉴于任何实现
Device
还实现了
TQDispatch
,这似乎应该是可能的。
Arc<dyn Device>
在我的项目向量中,我需要它们是
Arc<dyn TQDispatch>
为图书馆。
最佳答案
I can cast the original 'real' object to either, but I cannot find how to cast between the 2 traits.
pub trait Device: TQDispatch{..}
表示“设备需要 TQDispatch”,而不是“设备扩展 TQDispatch”。
Arc
输出,您还需要为此创建一个全新的 Arc,因为
dyn Device
和
dyn TQDispatch
完全是不同的值(value)观。
关于rust - 如何将 `Arc<dyn SubTrait>` 转换为 `Arc<dyn SuperTrait >` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63554958/
我是一名优秀的程序员,十分优秀!