I wish they had a chapter covering how to efficiently implement graph algorithms without ending up in a struggle with the borrow checker.
It touches on the issues you are implying.
Or just use RefCell, deferring the borrow checking until runtime.
Another strategy could be to give every node an explicit ID, and then have a mapping ID -> node. Every else you just refer to the nodes by their IDs.