В настоящее время я хочу определить структуру для игры 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()
.
Каков идиоматический способ написать это?