我有一個的集合Trait,該函數(shù)會對其進(jìn)行迭代并執(zhí)行某些操作,然后我要檢查實(shí)現(xiàn)器類型,如果它是類型,則將其Foo轉(zhuǎn)換為低,然后調(diào)用一些Foo方法。基本上,它類似于Go的類型切換和接口轉(zhuǎn)換。我四處搜索發(fā)現(xiàn)有關(guān)Any特質(zhì),但只能在'static類型上實(shí)現(xiàn)。為了證明我想要的是: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貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊
如您所知,向下轉(zhuǎn)換僅適用于Any特征,是的,它僅支持'static數(shù)據(jù)。您可以在這里找到有關(guān)為何如此的最新討論。基本上,很難實(shí)現(xiàn)對任意生存期的引用的反射。
(至少到目前為止)也無法Any輕松地與您的自定義特征結(jié)合。但是,最近創(chuàng)建了一個針對您的特征自動實(shí)現(xiàn)的宏庫Any。您也可以在這里找到一些討論。
- 2 回答
- 0 關(guān)注
- 435 瀏覽
添加回答
舉報
0/150
提交
取消