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());
}