小编gui*_*tes的帖子

在此示例中,为什么我不能一次多次以可变方式借用?

游戏的最小示例,玩家拥有一个位置并随着时间的流逝而走动。编译如下:

use std::thread::sleep;
use std::time::Duration;

struct Player {
    position: usize,
}

impl Player {
    fn new() -> Self {
        Self { position: 0 }
    }
}

impl Player {
    fn get_position(&self) -> usize {
        self.position
    }
}

impl Player {
    fn walk(&mut self) {
        self.position += 1;
    }
}

fn main() {
    let mut player = Player::new();
    loop {
        player.walk();
        sleep(Duration::from_secs(1));
    }
}
Run Code Online (Sandbox Code Playgroud)

如果玩家借用该位置而不是拥有它,则不会编译:

use std::thread::sleep;
use std::time::Duration;

struct Player<'a> {
    position: &'a mut usize,
}

impl<'a> Player<'a> {
    fn …
Run Code Online (Sandbox Code Playgroud)

mutability rust borrow-checker

2
推荐指数
1
解决办法
87
查看次数

标签 统计

borrow-checker ×1

mutability ×1

rust ×1