I am trying to get the following working, specifically the render function, but cannot for the life of me work it out,
fn main() {
let mut entities = Entities::new();
let mut square = Square { i: 0 };
entities.push(&mut square);
let mut square = Square { i: 1 };
entities.push(&mut square);
}
trait Renderable {
fn render(&mut self);
}
struct Entities<'a> {
entities: Vec<&'a dyn Renderable>,
}
impl<'a> Entities<'a> {
pub fn new() -> Self {
Self {
entities: Vec::new(),
}
}
pub fn push(&mut self, entity: &'a mut dyn Renderable) {
self.entities.push(entity);
}
pub fn render(&mut self) {
for e in self.entities.iter_mut() {
e.render();
}
}
// bonus points
pub fn entities_iter(&mut self) -> impl Iterator<Item = &dyn Renderable> {
}
}
struct Square {
i: u32,
}
impl Renderable for Square {
fn render(&mut self) {
self.i += 1
}
}