不能复制包含字符串的结构,那么我该如何解决这个问题呢?
考虑下面的结构:
pub struct Character {
pub name: String
}
pub fn build_character(name: String) -> Character {
Character {
name,
}
}
现在还没有什么复杂的东西,所以现在我们有了一个通过将字符串名传递给build_character
构建的字符,我们将这个结构传递给一个新函数:
pub fn create_game(character: Character) -> Game {
Game {
active: true,
game_character: character,
}
}
游戏内容定义如下:
pub struct Game {
active: bool,
game_character: Character,
}
impl Game {
pub fn is_active(&self) -> bool {
return self.active;
}
pub fn set_acive(&mut self, active: bool) {
self.active = active;
}
pub fn get_character(&self) -> Character {
return self.game_character;
}
pub fn update_character(&mut self, character: Character) {
self.game_character = character;
}
}
这就是我们有问题的地方。
error[E0507]: cannot move out of `self.game_character` which is behind a shared reference
--> game/src/game/set_up_game.rs:19:16
|
19 | return self.game_character;
| ^^^^^^^^^^^^^^^^^^^ move occurs because `self.game_character` has type `character::character::charactersheet::Character`, which does not implement the `Copy` trait
在函数中:
pub fn get_character(&self) -> Character {
return self.game_character;
}
这是有道理的。但是我们都知道,我们不能将复制特征添加到字符结构中,因为字符串不能被复制,它们是指向内存的指针。我试过克隆,但也不起作用,我得到了同样的错误。
(根据错误,克隆和复制用于字符结构)。
这里的想法是,游戏对象被传递,允许我更新角色,思考清单,法术,生命,等等。
我将获取游戏对象,获取角色,更新角色,然后将角色设置回游戏对象。
所以我的问题是我们如何解决这个问题?
转载请注明出处:http://www.intsu.net/article/20230428/1882087.html