move(&mut self) {
let iter = self.board.create_sequence_to_start();
self.handle_item(iter);//тут мутирует self
}
fn create_sequence_to_start(&self) -> impl Iterator<Item=(usize, bool)> + '_ {
(0..self.cells.len()).map(|index| (index, (index + 1) % self.size == 0))
}
как я понимаю + '_ для того, чтоб компилятор знал сколько должен жить созданный map итератор т.к. лямбда захватывает self.size и непонятно сколько эта лямбда просуществует. Как вообще лямбда може захватить self без move?
Именно без move лямбда его и захватывает
Я думал без в нутри лямбды self будут не виден и попросту не скомпилируется. ``` (0..self.cells.len()).rev().map(move |index| (index, (index % self.size == 0))) ``` при таком раскладе компилятор тоже требует + '_
'_ в данном случае значит "такой же лайфтайм как у &self"
Это я понимаю вопрос скорее в том, почему лямбда self захватывает
Обсуждают сегодня