为了账号安全,请及时绑定邮箱和手机立即绑定

我可以使用特征对象键入自省,然后向下转换吗?

我可以使用特征对象键入自省,然后向下转换吗?

Git
杨__羊羊 2019-10-12 11:19:12
我有一个的集合Trait,该函数会对其进行迭代并执行某些操作,然后我要检查实现器类型,如果它是类型,则将其Foo转换为低,然后调用一些Foo方法。基本上,它类似于Go的类型切换和接口转换。我四处搜索发现有关Any特质,但只能在'static类型上实现。为了证明我想要的是:let vec: Vec<Box<Trait>> = //for e in vec.iter() {    e.trait_method();    // if typeof e == Foo {    // let f = e as Foo;    // f.foo_method();    //}}
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

如您所知,向下转换仅适用于Any特征,是的,它仅支持'static数据。您可以在这里找到有关为何如此的最新讨论。基本上,很难实现对任意生存期的引用的反射。


(至少到目前为止)也无法Any轻松地与您的自定义特征结合。但是,最近创建了一个针对您的特征自动实现的宏库Any。您也可以在这里找到一些讨论。


查看完整回答
反对 回复 2019-10-12
  • 2 回答
  • 0 关注
  • 395 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信