The implementation of FnOnce is not general enough

rustc is bad at figuring out closures should be higher ranked unless the closure is declared in a context demanding it. A properly bounded function parameter is one such context. You moved the closure out of that context.

1 Like