小编mau*_*aun的帖子

如何初始化相互引用的struct字段

我目前想要使用GamerIterator 为活塞游戏定义一个结构:

pub struct MyGame<'a> {
    game_window: GameWindowGLFW,
    game_iter: GameIterator<'a, GameWindowGLFW>,
    //...
}
Run Code Online (Sandbox Code Playgroud)

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
    //...
}
Run Code Online (Sandbox Code Playgroud)

我认为我可以通过使用Option<GameIterator<...>>和init()方法解决初始化问题,但我想避免这种情况,因为我可以保证game_iternew()完成后存在.

写这个的惯用方法是什么?

rust

23
推荐指数
1
解决办法
4632
查看次数

标签 统计

rust ×1