前几天我刚开始学习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,
}
也可以使用String
或Box<str>
等拥有类型。