如何从Rust中的另一个函数访问结构变量?

时间:2020-10-11 07:06:02

标签: variables struct rust

我正在尝试制作一个简单的游戏,作为练习学习生锈的工具,我想创建一个打印玩家统计信息的功能。

我为玩家统计信息创建了一个结构,然后在主函数中对其进行了定义。

#[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);
}

当我尝试编译时,出现错误,即在统计打印机功能范围内找不到播放器。

有什么想法吗?

1 个答案:

答案 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不会拥有它的所有权,这会使传递的参数可重复使用。

相关问题