I have a function with take a iterator of Foo
:
fn bar<'a, I:Iterator<Item = &'a Foo>,>(iter: I) {}
and It works fine when using like this:
let vec = vec![Foo::new(); 3];
bar(vec.iter());
but now the type of vec
changes to Vec<Arc<Foo>>
, I tried to create a new vector which safe references of Foo
to feed bar
:
let mut vec2 : Vec<&Foo> = vec::new();
vec.iter().for_each(|item| {
vec2.push(item.as_ref());
});
but the item type of vec2.iter()
is &&Foo
, not &Foo
, which do not meet the parameter in bar
.
I tried for hours but didn't find a way.
Since I can't change the signature of bar()
, any way I can feed a Vec<Arc<Foo>>
to it?