如何解决将Rc <Any>转换为Rc <Trait>
我正在尝试创建一个映射,其中的键是特征的port
,值是实现该特征的结构。
TypeId
要在地图上放置新对象,请使用以下代码:
impls: HashMap<TypeId,Rc<dyn Any>>
但是当我尝试从地图上获取该对象时,我需要将其投射回去。
let type_id = TypeId::of::<dyn Trait>();
let obj_ref: Rc<dyn Any> = Rc::new(obj);
self.impls.insert(type_id,Rc::clone(&obj_ref));
我尝试使用let any_comp_ref = self.impls
.get(&TypeId::of::<dyn Trait>())
.expect(&format!("Object for type: {} is not found",type_name::<dyn Trait>()));
let result: &dyn Trait = // ???
。但这仅适用于Rc::downcast
类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。