Обязательный параметр времени жизни в массиве vec - PullRequest
0 голосов
/ 18 января 2020

Так что каждый раз, когда я запускаю это:

static LAYERS_NB : u32 = 50;

struct Layers{
    layers: [Vec<render::Texture>;LAYERS_NB],
}

Я получаю эту ошибку:

error[E0106]: missing lifetime specifier
  --> src/display.rs:12:18
   |
12 |     layers: [Vec<render::Texture>;LAYERS_NB],
   |                  ^^^^^^^^^^^^^^^ expected lifetime parameter

Текстура - это структура из библиотеки-оболочки Rust SDL2. Я не понимаю, почему он спрашивает меня о жизни, так как мой Struct не имеет никаких ссылок. Может кто-нибудь объяснить мне, почему?

Спасибо!

1 Ответ

2 голосов
/ 18 января 2020

Ну, sdl2::render::Texture имеет параметр времени жизни, поэтому ваша структура, содержащая его, также должна иметь его. И размер массива должен быть постоянным usize:

const LAYERS_NB: usize = 50;

struct Layers<'a> {
    layers: [Vec<render::Texture<'a>>; LAYERS_NB],
}

Компилятор Rust, как правило, очень хорошо говорит вам, что не так. Попробуйте прочитать диагноз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...