>>306
更新参照ってのが&mutのことならできる時とできない時がある

同じ関数内で &mut a.b.c と&mut a.b.d を取ることはできるけど
&mut a.b をとって &mut a.b.d を返す関数を呼び出した後は a.b.d にアクセスできない
これは関数呼び出し時点で a.b が borrow されると判断されるため

このあたりを何とかしようとする 議論は昔からあるけど特に進展なし
https://github.com/rust-lang/rfcs/issues/1215

実用的にはデータ構造の設計を見直すか、RefCell でくるむのが良いと思う
後者は &a.b をとって RefMut を返す関数にするってことね