如何使用变量设置结构"name" &'static str 类型的值



前几天我刚开始学习rust(所以这是我的第一个语言项目(。我正在尝试创建一个简单的游戏,我想让玩家输入他们的名字并使用它,这里是玩家结构:

struct Player {
health: i32,
damage: i32,
sprite: &'static str,
name: &'static str,
gold: i32,
}

然后在我的主程序中,我调用一个函数,该函数简单地返回玩家输入的字符串:

fn main() 
{
let player_name = ask_something("what is your name?");
let player = Player {health: 10, damage: 3, sprite: &player_name.as_str(), name: "player", gold: 0};
}

但这给了我一个错误:

`player_name` does not live long enough
argument requires that `player_name` is borrowed for `'static`

所以我的问题是我该如何正确地做到这一点。

您不能从运行时计算的值(包括从用户输入中获得的值(中获得&'static str。您必须在结构中添加一个生存期参数:

struct Player<'a> {
health: i32,
damage: i32,
sprite: &'a str,
name: &'a str,
gold: i32,
}

也可以使用StringBox<str>等拥有类型。

最新更新