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

我有一个的集合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();

    //}

}


MYYA
浏览 364回答 2
2回答

交互式爱情

如您所知,向下转换仅适用于Any特征,是的,它仅支持'static数据。您可以在这里找到有关为何如此的最新讨论。基本上,很难实现对任意生存期的引用的反射。(至少到目前为止)也无法Any轻松地与您的自定义特征结合。但是,最近创建了一个针对您的特征自动实现的宏库Any。您也可以在这里找到一些讨论。
打开App,查看更多内容
随时随地看视频慕课网APP