работает. https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=3de1c0a25557fca5ed14797418b827c1
А зачем тебе gat тут вообще? type Item = &'a mut T; тоже самое же в этом контексте, не?
Нет. Тут смысл в том, что возвращаемый Item блокирует итератор на время своего существования (с 'a, отвязанным от &mut self в next, это не работает), что позволяет без проблем возвращать мутабельные ссылки.
там где-то должно быть место чтобы потребовать 'a: 'b, но его нет
Написать type Item<'b> where 'a: 'b = &'b mut T; можно, но не компилируется. lifetime bound not satisfied
Впрочем, по смыслу это получается, что 'a должен пережить 'b для любого 'b
ну оно так и должно быть: итератор взятый по ссылке должен переживать любое своё значение, взятое по ссылке
Не, у нас не может быть любого 'b, так как 'b берётся только из &'с mut self в next, а 'с не может пережить 'a.
значит 'b не должно переживать 'a, я ведь правильно понимаю?
Обсуждают сегодня