About #10: > because to unify them at this point would be a breaking change Couldn't they change this in a future edition without breaking older editions?
Because you can pass closures into functions across crate boundaries, which requires consistent lifetime semantics, I find it unlikely that this will be implemented.