The problem
Currently, the following code compiles:
fn assert_static_closure<R, F: 'static + FnOnce() -> R>(_val: F) {}
fn foo<'a>() {
let closure = || -> &'a str { "" };
assert_static_closure(closure);
}
This code creates a closure with no captures or arguments, which returns &'a str. This closure: