如何声明类型为<& str,String>的哈希映射在鲁斯特?

时间:2016-12-19 02:17:10

标签: rust

我想在我的结构中声明一个HashMap成员,因为键总是一个静态文字,内容应该被修改,所以我期望的类型是:

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>,
}

此解决方案有效,但并不完美。任何人都可以在这里解释我的错误吗?

1 个答案:

答案 0 :(得分:4)

您需要指定密钥的生命周期为'static

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

在struct字段或枚举变体中,lifetime parameters不能省略;必须明确指定它们,如果要接受'static以外的生命周期,则必须在结构或枚举本身上添加生命周期参数。