Rust 自 1.86 起有了稳定的 Trait 上溯转换 功能。例如 trait Base: Any{}
+ trait Derived: Base{}
,以前具体类型 &T
转为 &dyn Derived
后无法转为 &dyn Base
(只能通过 &T
直接转换到 &dyn Base
)。现在有了向上转换的支持,&T
可以转为 &dyn Derived
再转为 &dyn Base
,还能再转到 &dyn Any
然后通过 RTTI 向下转换回 &T
,完整的多态功能就此实现!!
暂无评论