gpt4 book ai didi

rust - Rust 中的多次借用

转载 作者:行者123 更新时间:2023-11-29 08:16:22 28 4
gpt4 key购买 nike

在 Rust 中有什么通用的模式可以实现这样的东西吗?

错误是

cannot borrow `sprite` as mutable because it is also borrowed as immutable

我理解这个问题,但不知道如何在 Rust 中实现类似的东西。

struct Sprite {
position: i32,
}

impl Sprite {
pub fn left(&mut self) {
self.position += 1;
}
}

struct Game<'g> {
sprite: &'g Sprite,
}

impl<'g> Game<'g> {
pub fn new(sprite: &Sprite) -> Game {
Game { sprite: sprite }
}
}

fn main() {
let mut sprite = Sprite { position: 3 };

let game = Game::new(&sprite);

sprite.left();
}

代码也可以在 playground 上找到.

最佳答案

直觉上,Game 应该拥有它们的 Sprite。这是反射(reflect)该设计更改的更新版本。同样在playground .

struct Sprite {
position: i32,
}

impl Sprite {
pub fn left(&mut self) {
self.position += 1;
}
}

struct Game {
sprite: Sprite,
}

impl Game {
pub fn new(sprite: Sprite) -> Game {
Game {
sprite: sprite
}
}
}


fn main() {
let sprite = Sprite{ position: 3 };

let mut game = Game::new(sprite);

game.sprite.left();
}

关于rust - Rust 中的多次借用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43103520/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com