gpt4 book ai didi

rust - 我可以对 trait 对象进行类型自省(introspection),然后向下转型吗?

转载 作者:行者123 更新时间:2023-11-29 08:21:37 25 4
gpt4 key购买 nike

我有一个 Trait 的集合,一个迭代它并做一些事情的函数,然后我想检查实现者类型以及它是否是 Foo 然后向下转型并调用一些 Foo 方法。

基本上,类似于 Go 的 type-switchinterface conversion .

四处搜索我发现了 Any trait但它只能在 '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();
//}
}

最佳答案

正如您所注意到的,向下转型仅适用于 Any 特征,是的,它仅支持 'static 数据。您可以找到最近关于为什么如此的讨论 here .基本上,为任意生命周期的引用实现反射是困难的。

也不可能(至少到目前为止)将 Any 与您的自定义特征轻松组合。但是,macro library用于为您的特征自动实现 Any 最近已创建。您还可以找到一些关于它的讨论 here .

关于rust - 我可以对 trait 对象进行类型自省(introspection),然后向下转型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com