Как стать автором
Обновить

Комментарии 3

Пользователи не получают ничего полезного от «собственного wgpu-рендерера»,

Конечно несколько странное утверждение. Wgpu нужен фактически для кроссплатформенного API для графики - opengl/directx/metal/web gpu

Вроде автор опытен в Rust, но какие-то странно проблемы находит. Если для эксперимента нужно удалить все lifetime-ы, то можно добавить в структуру PhantomData<&'a ()>. Обычно мест конструирования гораздо меньше, чем мест, где потенциально придется удалить 'a.

Хочется контекст со всеми данными, но не позволяют его разделить? Ну, если нам и так borrow checker мешает, то почему бы с помощью преобразования в *mut и обратно в &mut не поменять время жизни (или совсем его удалить)? Можно любое выбрать, для экспериментов сойдет.

Я думаю, что в играх, в случае с Rust, хочется вообще почти что всё держать в Rc и Arc. Потому что почти у каждого объекта, за один кадр, компоненты могут быть неоднократно заимствованы десятком систем, для чтения данных, и минимум одной для их изменения, одно дело, когда эти объекты крутит Runtime, там можно спроектировать, чтобы коллизий было поменьше, но другое дело, когда начинается скриптинг игровой логики. Часто хочется в объекте иметь ссылки, которые живы на протяжении всего цикла работы приложения, чтобы не приходилось каждый кадр просить и отправлять новую ссылку на объект.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории