Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

No 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.


Hm, in this case it's actually nice that this works because there's nothing unsafe or unexpected going on.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: