В настоящее время я хочу определить структуру для игры Piston с помощью GamerIterator:
pub struct MyGame<'a> {
game_window: GameWindowGLFW,
game_iter: GameIterator<'a, GameWindowGLFW>,
//...
}
GameIterator является общим в GameWindow и его жизни. Я хочу сказать компилятору, что он имеет такое же время жизни, что и поле "game_window"/"вся структура", и оставьте время жизни для структуры.
У меня также возникают трудности с инициализацией этого:
MyGame {
game_window: GameWindowGLFW::new(GameWindowSettings {/*...*/},
game_iter: GameIterator::new(&mut game_window, &game_iter_settings), // game_window cannot be used here
//...
}
Я думаю, что я могу обойти проблему инициализации, используя Option<GameIterator<...>> и метод init(), но я хотел бы избежать этого, потому что я могу гарантировать, что game_iter присутствует после завершения new().
Каков идиоматический способ написать это?