3 ms·
Wouldn't fixing 10 just mean allowing things that were previously not allowed? That's not a breaking change. What am I missing?
by Buttons840 3y ago
Wouldn't fixing 10 just mean allowing things that were previously not allowed? That's not a breaking change. What am I missing?
- afdbcreid 3y agoNo it will not: fn requires_static(_: &'static str) {} let long_lifetime: &'static str = ""; let closure = |_input: &str| -> &str { long_lifetime }; let short_lifetime = &String::new(); requires_static(closure(short_lifetime)); This code compiles currently as the returned `&str` is inferred to be `&'static str` because this is what it actually returns, but with #10 fixed it will not because lifetime elision rules say that the lifetime of the output is the same as the lifetime of the input.
- brabel 3y agoHm, in this case it's actually nice that this works because there's nothing unsafe or unexpected going on.