данные
Но я именно этого и хочу (указывать на внутренние данные).
> Иначе self будет эксклюзивно заблокирован пока живёт результат next()
Это тоже меня устраивает
> Owned итератор с таким интерфейсом не получится сделать
А как же трик с advance+get? Он же абсолютно эквивалентен моему коду. Да и в других чуть более простых кейсах вполне можно Owned итератор сделать с таким интерфейсом, вот пример: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=2774178ff899df718c1213aa1d0d6928
> Это тоже меня устраивает Это сейчас и происходит. Первый вызов next() возвращает ссылку, которая может покинуть функцию, поэтому self.inner блокируется на всё время жизни функции, то есть второй раз next() уже нельзя вызвать. advance + get обходят эту проблему, потому что разделяют эксклюзивные ссылки (&mut self) и шареные (&self)
Обсуждают сегодня