我有一个的集合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。您也可以在这里找到一些讨论。
- 2 回答
- 0 关注
- 395 浏览
添加回答
举报
0/150
提交
取消