rust q: what exactly is going wrong in this? playground link: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=021d3ccc4d37fcb024e42035105b9b4b
concretely i understand the solution is "lift foo(t) out from being an argument, give it its own binding, pass that", but i don't understand how that differs from how rustc compiles `bad_i_guess`
since i would expect, semantically, that arguments are evaluated in some order that i don't remember, then passed in. but rust believes that the mutable borrow is passed to two places at once, as if `foo` and `bar` could be simultaneously evaluated?