отрисовка pixels происходит. И хочется например загрузку файлов засунуть в фоновый тред.
Можно наверное на каждую фоновую операцию сохранять канал, в отдельном треде в него засовывать файл как загрузится, и в основном из канала читать и засовывать куда надо.
Очень костыльно выглядит и надо по полю или по переменной на каждую операцию создавать
Можно еще наверное завернуть структуру с состоянием в какой-нибудь Arc<Mutex<State>> и в фоновом треде в нее складывать что надо. Чуть менее костыльно, но тоже не очень.
В идеале хочется какой-нибудь smol взять и в него засунуть
async {
let loaded_file = defer(load_file).await;
global_state.files.push(loaded_file)
}
Я так понимаю проблема тут в том, чтобы объяснить расту, что эта корутина не переживет state.
А пока писал нагуглил вот такое https://docs.rs/async-scoped/latest/async_scoped/ Unfortunately, since the std::mem::forget method is allowed in safe Rust, the purely asynchronous API here is inherently unsafe.
Есть еще идеи как это красиво сделать?
судя по всему тебе может приглянуться что то из crossbeam
Обсуждают сегодня