2016-12-19 1 views
0

Ich möchte ein HashMap Mitglied in meiner Struktur erklären und wie die Schlüssel immer eine statische Literale sein wird und der Inhalt soll geändert werden, so dass der Typ-I ist zu erwarten:Wie deklariere ich eine Hashmap mit dem Typ <& str, String> in Rust?

pub struct SmpStruct { 
    word_dict: HashMap<&str, String>, 
} 

Leider ist der Compiler gibt mir das Feedback:

error[E0106]: missing lifetime specifier 
--> src/main.rs:4:24 
    | 
4 |  word_dict: HashMap<&str, String>, 
    |      ^expected lifetime parameter 

Als Alternative verwende ich HashMap<String, String>:

pub struct SmpStruct { 
    word_dict: HashMap<String, String>, 
} 

Thi s Lösung funktioniert, ist aber nicht perfekt. Kann mir jemand erklären, was ich hier falsch mache?

Antwort

4

Sie müssen angeben, dass die Lebensdauer der Tasten ist 'static:

pub struct SmpStruct { 
    word_dict: HashMap<&'static str, String>, 
} 

In struct Feldern oder Enum-Varianten, lifetime parameters kann nicht verzichtet werden; Sie müssen explizit angegeben werden. Wenn Sie andere Lebensdauern als 'static akzeptieren möchten, müssen Sie einen lebenslangen Parameter für die Struktur oder Enumeration selbst hinzufügen.

Verwandte Themen