I'm trying to understand how closures are transformed under the hood into an anonymous struct capturing the environment + the Fn/FnMut/FnOnce trait implementation referring to self for that struct, and this is as far as I could go.
The problem is that while the upper part compiles with no problem, the later gives a compiler error (correctly), since the value was moved when call_once was invoked.. What am I missing? Why the closure wasn't moved when invoked?