我正在尝试制作一个简单的游戏,作为练习学习生锈的工具,我想创建一个打印玩家统计信息的功能。
我为玩家统计信息创建了一个结构,然后在主函数中对其进行了定义。
#[derive(Debug)]
struct Player<'a> {
max_health: i32,
current_health: i32,
attack_dmg: i32,
level: i32,
name: &'a str,
}
然后像这样定义它们:
pub fn main() {
let mut name = "";
let mut level = 1;
let mut attack_dmg = 30;
const max_health: i32 = 100;
let mut current_health = 100;
let player = Player { name, level, attack_dmg, current_health, max_health };
}
然后我像这样打印统计信息:
pub fn stat_printer() {
println!("Your stats are: {:?}", player);
}
当我尝试编译时,出现错误,即在统计打印机功能范围内找不到播放器。
有什么想法吗?
答案 0 :(得分:0)
在您的stat_printer()
函数中,您无权访问在player
中初始化的main
。尝试将player
作为参考参数传递给stat_printer()
,但也必须使Player
结构公开。
#[derive(Debug)]
pub struct Player<'a> {
max_health: i32,
current_health: i32,
attack_dmg: i32,
level: i32,
name: &'a str,
}
// ...
pub fn stat_printer(player: &Player) {
println!("Your stats are: {:?}", player);
}
作为参考(&Player)传递是必需的,因此函数stat_printer
不会拥有它的所有权,这会使传递的参数可重复使用。