| #### Note: this error code is no longer emitted by the compiler. | |
| Reference's lifetime of borrowed content doesn't match the expected lifetime. | |
| Erroneous code example: | |
| ```compile_fail | |
| pub fn opt_str<'a>(maybestr: &'a Option<String>) -> &'static str { | |
| if maybestr.is_none() { | |
| "(none)" | |
| } else { | |
| let s: &'a str = maybestr.as_ref().unwrap(); | |
| s // Invalid lifetime! | |
| } | |
| } | |
| ``` | |
| To fix this error, either lessen the expected lifetime or find a way to not have | |
| to use this reference outside of its current scope (by running the code directly | |
| in the same block for example?): | |
| ``` | |
| // In this case, we can fix the issue by switching from "static" lifetime to 'a | |
| pub fn opt_str<'a>(maybestr: &'a Option<String>) -> &'a str { | |
| if maybestr.is_none() { | |
| "(none)" | |
| } else { | |
| let s: &'a str = maybestr.as_ref().unwrap(); | |
| s // Ok! | |
| } | |
| } | |
| ``` |