Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
799 views
in Technique[技术] by (71.8m points)

rust - Compiler asking for lifetime in struct when lifetime is given

I'm trying to write the examples in the book "SFML Game Development" but I'm having a problem with the lifetimes for the struct that's supposed to represent the game world. The error is as follows:

extern crate sfml;

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

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

Error message:

error[E0106]: missing lifetime specifier
 --> src/game.rs:8:18
  |
8 |     mPlayer: &'s CircleShape,
  |                  ^^^^^^^^^^^ expected lifetime parameter

Why is it asking for a lifetime if I have given it one?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Why is it asking for a lifetime if I have given it one?

Because you haven't given it the lifetime where it's needed. Look closely at the error message. It's telling you that CircleShape is missing a lifetime, not the reference to CircleShape (although that's also needed).

Review the definition of CircleShape:

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

It has been parameterized by a lifetime, so you need to provide one:

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

Whether that's correct for your case, I can't say, but it should compile.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...