Ich verwende serde und serde_json 1.0 Daten aus einer Base64 Zeichenfolge zu entschlüsseln:Lebensdauer Fehler beim Erstellen einer Funktion, die einen Wert der Umsetzung serde zurück :: Deserialize
fn from_base64_str<T: Deserialize>(string: &str) -> T {
let slice = decode_config(string, URL_SAFE).unwrap();
serde_json::from_slice(&slice).unwrap()
}
Wenn ich kompilieren, ich habe diese:
pub trait Deserialize<'de>: Sized {
Also habe ich ein:
error[E0106]: missing lifetime specifier
--> src/main.rs:6:23
|
6 | fn from_base64_str<T: Deserialize>(string: &str) -> T {
| ^^^^^^^^^^^ expected lifetime parameter
die serde doc Überprüfung wird Deserialize
definiert die Lebensdauer dded:
fn from_base64_str<'de, T: Deserialize<'de>>(string: &str) -> T {
let slice = decode_config(string, URL_SAFE).unwrap();
serde_json::from_slice(&slice).unwrap()
}
Der Compiler sagte mir dann:
error: `slice` does not live long enough
--> src/main.rs:11:29
|
11 | serde_json::from_slice(&slice).unwrap()
| ^^^^^ does not live long enough
12 | }
| - borrowed value only lives until here
|
note: borrowed value must be valid for the lifetime 'de as defined on the body at 9:64...
--> src/main.rs:9:65
|
9 | fn from_base64_str<'de, T: Deserialize<'de>>(string: &str) -> T {
| _________________________________________________________________^ starting here...
10 | | let slice = decode_config(string, URL_SAFE).unwrap();
11 | | serde_json::from_slice(&slice).unwrap()
12 | | }
| |_^ ...ending here
Ich kenne nur die Grundlagen von Leben in Rust, so dass ich von den 'de
in trait Deserialize
sehr verwirrt.
Wie kann ich den Lebenszeitfehler in einer solchen Funktion beheben? Ich verwende Rust 1.18.0-nächtliche (452bf0852 2017-04-19)