This question связаны, однако в большей степени, охватывает причину почему компилятор не может вывести безопасный срок службы при возврате изменяемых ссылок из Iterator::next
, который я думаю, я понимаю.Простой, как возможный пример возвращения изменяемой ссылки с вашего собственного итератора
Мой вопрос:
Какие конкретные шаги вы можете предпринять при проектировании собственный итератор так, что он может производить изменяемые ссылки? В конечном счете, я надеюсь на краткий, по возможности, пошаговый, комментарий к примеру как Iterator
, так и его next
, которые я (и любой) могут использовать в качестве четкой ссылки, когда они сталкиваются с этой ситуацией. unsafe
примеры в порядке, я думаю, они, вероятно, необходимы!
ПРИМЕЧАНИЕ: Я понимаю, что MutItems
обычно является рекомендуемым примером, однако его выполнение может быть сложно выполнить, поскольку нет никакой документации по 1. Как маркеры работают в этой ситуации и 2. Что расширяет макрос iterator!
до и как это работает. Если вы используете MutItems
в качестве своего примера, пожалуйста, проясните это?
Спасибо!
Параметр 'iterator' макрос просто немного раньше, в файле: http://doc.rust-lang.org/src/core/home/rustbuild/src/rust-buildbot/slave/nightly- linux/build/src/libcore/slice.rs.html # 1042-1105 –