gpt4 book ai didi

rust - 如何从实现该特征的结构迭代器中收集特征向量

转载 作者:行者123 更新时间:2023-12-03 11:45:08 25 4
gpt4 key购买 nike

我正在尝试从实现该特征的结构迭代器中获取特征向量。
到目前为止,我能够做到这一点:

    fn foo() -> Vec<Box<dyn SomeTrait>> {
let v: Vec<_> = vec![1]
.iter()
.map(|i| {
let b: Box<dyn SomeTrait> = Box::new(TraitImpl { id: *i });
b
})
.collect();
v
}

但是,我想使其更加简洁。

最佳答案

这对我有用。 Playground
尽管我不是Rust专家,所以我不确定'staticfoo<S: SomeTrait + 'static>的限制

trait SomeTrait { fn echo(&self); }
impl SomeTrait for u32 {
fn echo(&self) {
println!("{}", self);
}
}

fn foo<S: SomeTrait + 'static>(iter: impl Iterator<Item=S>) -> Vec<Box<dyn SomeTrait>> {
iter.map(|e| Box::new(e) as Box<dyn SomeTrait>).collect()
}

fn main() {
let v = vec!(1_u32, 2, 3);
let sv = foo(v.into_iter());
sv.iter().for_each(|e| e.echo());
}

关于rust - 如何从实现该特征的结构迭代器中收集特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63088520/

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