我想在我的结构中声明一个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>,
}
此解决方案有效,但并不完美。任何人都可以在这里解释我的错误吗?
答案 0 :(得分:4)
您需要指定密钥的生命周期为'static
:
pub struct SmpStruct {
word_dict: HashMap<&'static str, String>,
}
在struct字段或枚举变体中,lifetime parameters不能省略;必须明确指定它们,如果要接受'static
以外的生命周期,则必须在结构或枚举本身上添加生命周期参数。