История изменений
Исправление netrino, (текущая версия) :
И это будет значить, что renderer содержит ссылку на объект, внешний по отношению к структуре App. То есть renderer не сможет использовать App::window.
Так вон же использует, без проблем:
let renderer = pollster::block_on(WGPURenderer::new(window))
.expect("Failed to create renderer");
Ну и ApplicationHandler предполагает, что окна будут создаваться динамически. Лайфтаймы на такое использование не рассчитаны. Так что тут только ’static
'static
или не 'static
в этом конкретном примере никакой роли не играет вообще. Время жизни, хоть и называется 'window
, к окну никакого отношения не имеет и оно в любом случае шире, чем нужно renderer
-у. Так что код эквивалентен с 'window
и без него.
Но, как я сказал, мой коммент был конкретно про ошибку компиляции, а не про архитектуру. Часто встречал новичков, которые не знают про то, что trait-object имеет время жизни, которое можно явно указать.
Исходная версия netrino, :
И это будет значить, что renderer содержит ссылку на объект, внешний по отношению к структуре App. То есть renderer не сможет использовать App::window.
Так вон же использует, без проблем:
let renderer = pollster::block_on(WGPURenderer::new(window))
.expect("Failed to create renderer");
Ну и ApplicationHandler предполагает, что окна будут создаваться динамически. Лайфтаймы на такое использование не рассчитаны. Так что тут только ’static
'static
или не 'static
в этом конкретном примере никакой роли не играет вообще. Время жизни, хоть и называется 'window
, к окну никакого отношения не имеет и оно в любом случае шире, чем нужно renderer
-у. Так что код эквивалентен с 'window
и без него.
Но, как я сказал, мой коммент был конкретно про ошибку компиляции, а не про архитектуру. Часто встречал новичков, которые не знают про то, что trait-object имеет время жизни, которое можно явно указать.