2016-12-19 7 views
0

は、私は私の構造でHashMapメンバーを宣言したいと思いますし、キーは常になりますよう、静的リテラルと内容は変更されなければならないので、私は期待の種類は次のとおりです。残念ながらRustの<&str、String>型のハッシュマップを宣言するにはどうすればいいですか?

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

、コンパイラ私にフィードバックを与える:別の方法として

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

、私はHashMap<String, String>を使用しています:

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

ティソリューションは機能しますが、完璧ではありません。誰も私がここで間違ってやっていることを説明することはできますか?

答えて

4

あなたがキーの寿命が'staticであることを指定する必要があります。structフィールドまたは列挙型の変種で

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

lifetime parametersを省略することができません。それらを明示的に指定する必要があります。'static以外の存続期間を受け入れる場合は、構造体または列挙型自体に有効期間パラメータを追加する必要があります。

関連する問題