编译器在生命周期中询问生命周期

时间:2017-04-30 23:00:42

标签: rust lifetime

我试图在书中编写示例" SFML Game Development"但我对结构的生命周期有一个问题,它应该代表游戏世界。错误如下:

"${file1}_${file2}_Compare.txt"

错误讯息:

extern crate sfml;

use self::sfml::window::*;
use self::sfml::graphics::*;

pub struct Game<'s> {
    mWindow: RenderWindow,
    mPlayer: &'s CircleShape,
}

如果我给它一个,为什么要求终身?

1 个答案:

答案 0 :(得分:3)

  

如果我给它一个,为什么要求终身?

因为你还没有给它所需的生命周期。仔细查看错误消息。它告诉你CircleShape缺少生命周期,而不是引用CircleShape(虽然这也是必需的)。

查看CircleShape的定义:

pub struct CircleShape<'s> { /* fields omitted */ }

它已被生命周期参数化,因此您需要提供一个:

pub struct Game<'s> {
    mWindow: RenderWindow,
    mPlayer: &'s CircleShape<'s>,
}

对于你的案例,是否正确,我不能说,但它应该编译。