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

Rust 如何从实现该特征的结构迭代器中收集特征向量,rust,iterator,traits,Rust,Iterator,Traits,我试图从实现该特性的结构的迭代器中获得特性向量 到目前为止,我能够做到这一点: fn foo()->Vec{ 让v:Vec=Vec![1] .国际热核实验堆(iter) .map(|i|{ 设b:Box=Box::new(TraitImpl{id:*i}); B }) .收集(); v } 但我想让它更简洁。这对我很有用 虽然我不是铁锈大师,但我不确定foo(iter:impl迭代器)->Vec中的静态限制{ iter.map(| e | Box::new(e)as Box).collect(

我试图从实现该特性的结构的迭代器中获得特性向量

到目前为止,我能够做到这一点:

fn foo()->Vec{
让v:Vec=Vec![1]
.国际热核实验堆(iter)
.map(|i|{
设b:Box=Box::new(TraitImpl{id:*i});
B
})
.收集();
v
}
但我想让它更简洁。

这对我很有用

虽然我不是铁锈大师,但我不确定
foo(iter:impl迭代器)->Vec中的
静态限制{
iter.map(| e | Box::new(e)as Box).collect()
}
fn main(){
设v=vec!(1,2,3);
设sv=foo(v.into_iter());
sv.iter()。对于每个(| e | e.echo());
}
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());
}