и это прям непростая фича, которая была не сразу, я так понял (?). так что наверное оставить рекурсию - единственный вариант адекватный.
стэк не бесконечный
Не. просто хранение мутабельных ссылок в векторе не прокатывает само по себе: у тебя в векторе ссылка на родителя и на его потомка, а значит можно было бы получить одновременно две мутабельные ссылки на потомка: одну напрямую, другую через родителя. Что и без stacked borrows запрещено
насколько я знаю (а я только-только начал изучать), в языке есть механизм временной инвалидации ссылок и передачи захвата, хотелось бы что-нибудь такое же эксплуатировать
тут наверное что-то не так с именованием или пониманием Механизма инвалидации в safe Rust точно нет (законного, не эксплуатирующего баги компилятора). Можно хранить указатели вместо ссылок и уйти в unsafe, но там уже надо будет внимательно смотреть, чтоб в процессе манипуляций не появнялось одновременно живущий двух mut ссылок или mut и обычных на одно и то же
не, пока точно без unsafe, надо постепенно вкатываться в язык
так, я имел ввиду re-borrowing: производим новую ссылку из прежней через & *ref или &mut *ref. пользуемся этой ссылкой, как только обращаемся к прежней ссылке, заимствованные инвалидируются.
Обсуждают сегодня