метод async fn do_some_work(&mut self). Я хочу запустить сразу несколько работ - то есть сделать join!(self.do_some_work(), self.do_some_work()); Но естественно борроу-чеккер мне не разрешает. Как такое обходить?
Эмм кросбимовские scoped?
async fn foo(&mut self) раскрывается в fn foo(&'a mut self) -> impl 'a + Future<...> , то есть self захватывается на время выполнения футуры. Если футура ничего не захватывает в self, то можно переделать на fn foo(&mut self) -> impl Future<...> { /* копируем что нужно из self */ async move { ... } }
Обсуждают сегодня