LINUX.ORG.RU

История изменений

Исправление 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 имеет время жизни, которое можно явно указать.