У меня проблема с тем, что у меня есть функция, которая принимает Iterator
определенного типа структуры, и я хочу отправить свой вектор, который содержит этот же тип структуры, в качестве параметра функции.
Я не понимаю, что я делаю не так.Я пробовал несколько разных вещей:
- Отправка
vecName.iter()
оставляя меня с этим error: error[E0271]: type mismatch resolving <std::slice::Iter<'_, code_test_lib::gfx::AsteroidDrawData> as std::iter::Iterator>::Item == code_test_lib::gfx::AsteroidDrawData
- Отправка
vecName.into_iter()
оставляя меня с этим error: error[E0507]: cannot move out of borrowed content
- Отправка
&vecName.iter()
, давая мне это error: error[E0277]: &std::slice::Iter<'_, code_test_lib::gfx::AsteroidDrawData> is not an iterator
- Отправка
&vecName.into_iter()
, давая мне это: error[E0277]: &std::vec::IntoIter<code_test_lib::gfx::AsteroidDrawData> is not an iterator
Я не знаю, как я могу отправитьVec
к функции как Iterator
.
pub struct MyStruct {
pub dataA: f32,
pub dataB: f32,
}
struct MyProgram {
my_structs: Vec<MyStruct>,
}
pub trait BaseFunctions {
fn new() -> Self;
fn run(&mut self);
}
impl BaseFunctions for MyProgram {
fn new() -> Self {
//Create some data
let mut vec = Vec::new();
for x in 0..5 {
vec.push(MyStruct{
dataA: 1.0,
dataB: 1.0,
});
}
Self {
my_structs: vec,
}
}
fn run(&mut self) {
my_func(
self.my_structs.into_iter(),
);
}
}
pub fn my_func<Iter>(iter: Iter)
where
Iter: Iterator<Item = MyStruct>, {
for i in iter {
// Do something
}
}
fn main() {
let mut program = MyProgram::new();
program.run();
}