在一个简单的游戏循环中,我active_player
指向2个玩家对象中的一个。
let mut active_player = &mut self.player1;
loop {
// do stuff with active_player
println!("{} {}", self.player1.last_move(), self.player2.last_move());
// Switch to next player
}
问题来自于我尝试阅读self.player1.last_move()
我理解为什么我会收到错误但我不知道解决此问题的正确模式。这是active_player
应该是Rc
吗?
答案 0 :(得分:1)
可变借用的范围扩展了loop
的整个主体。 Here is a simple reproduction of your issue
你可以通过将可变借入的范围移到loop
来限制可变借用的范围......也许是这样:
loop {
{
let mut active_player = &mut self.player1; // or perhaps self.get_active_player(); ?
// ... do stuff with active_player ...
}
println!("{} {}", self.player1.last_move(), self.player2.last_move());
// Switch to next player
}