I normally do not mind it all, but occasionally you do hit a corner case with the Rust borrowchecker and you're best option is just trying random permutations until it accepts it. For example, almost all sensible compactions of this function failed, and this is what I was left with: