История изменений
Исправление Zenom, (текущая версия) :
leftmost = Ref::map(children[0].borrow(), |n| &n);
Так не сработает. Тут тип результата Ref<RCTree>
, а в &RCTree
преобразуется только &Ref<RCTree>
. Если же взять ссылку от этого выражения, то опять же, оно живёт только внутри цикла, а отдать мы её пытаемся наружу.
PS: компилятор в этом случае прав, ибо ссылка живёт в области видимости borrow(). Закончилась область - закончилась и ссылка. А вы ее куда-то еще отдаёте. Всё. Нет ёё уже.
Конечно прав. Я с компилятором не спорю, просто не могу найти способа выразить предлагаемую семантику в случае Rc<Ref<T>>
Исходная версия Zenom, :
leftmost = Ref::map(children[0].borrow(), |n| &n);
Так не сработает. Тут тип результата Ref<RCTree>
, а в &RCTree
преобразуется только Ref<RCTree>
. Если же взять ссылку от этого выражения, то опять же, оно живёт только внутри цикла, а отдать мы её пытаемся наружу.
PS: компилятор в этом случае прав, ибо ссылка живёт в области видимости borrow(). Закончилась область - закончилась и ссылка. А вы ее куда-то еще отдаёте. Всё. Нет ёё уже.
Конечно прав. Я с компилятором не спорю, просто не могу найти способа выразить предлагаемую семантику в случае Rc<Ref<T>>