Rust beklagt sich, dass get_string
nicht lange genug lebt. Es scheint für den gesamten Funktionsumfang am Leben zu bleiben, aber ich kann nicht sehen, wie das passiert.Wert will für den gesamten Funktionsumfang leben
error: `get_string` does not live long enough
--> src\lib.rs:7:23
|
7 | for value_pair in get_string.split('&') {
| ^^^^^^^^^^ does not live long enough
...
19 | }
| - borrowed value only lives until here
|
note: borrowed value must be valid for the anonymous lifetime #1 defined on the body at 3:59...
--> src\lib.rs:3:60
|
3 | fn parse_get(get_string: &str) -> HashMap<&str, Vec<&str>> {
| ^
use std::collections::HashMap;
fn parse_get(get_string: &str) -> HashMap<&str, Vec<&str>> {
let get_string = String::from(get_string);
let mut parameters: HashMap<&str, Vec<&str>> = HashMap::new();
for value_pair in get_string.split('&') {
let name = value_pair.split('=').nth(0).unwrap();
let value = value_pair.split('=').nth(1).unwrap();
if parameters.contains_key(name) {
parameters.get_mut(name).unwrap().push(value);
} else {
parameters.insert(name, vec![value]);
}
}
parameters
}
Sie versuchen, Referenzen auf eine lokale Variable zurückzugeben; die lokale Variable lebt nicht lange genug, um einen Verweis auf _because_ es ist lokal ... – ildjarn
Grundsätzlich ein Duplikat von [gibt es eine Möglichkeit, einen Verweis auf eine Variable in einer Funktion erstellt zurückgeben?] (http://stackoverflow.com/q/32682876/155423) – Shepmaster