Rust 什么是;缺少生存期说明符“;存储&;结构中的str?

Rust 什么是;缺少生存期说明符“;存储&;结构中的str?,rust,Rust,我正在尝试编写类似Excel的数据结构: use std::collections::HashMap; struct Excel { columns: HashMap<&str, Vec<f64>>, } fn main() {} 使用std::collections::HashMap; 结构Excel{ 列:HashMap, } fn main(){} 但我得到了一个错误: 错误[E0106]:缺少生存期说明符 -->src/main.rs:4:

我正在尝试编写类似Excel的数据结构:

use std::collections::HashMap;

struct Excel {
    columns: HashMap<&str, Vec<f64>>,
}

fn main() {}
使用std::collections::HashMap;
结构Excel{
列:HashMap,
}
fn main(){}
但我得到了一个错误:

错误[E0106]:缺少生存期说明符
-->src/main.rs:4:22
|
4 |列:HashMap,
|^预期寿命参数
有人能帮我理解发生了什么吗?

“缺少生存期说明符”意味着在结构定义中,您没有告诉它允许对字符串片段的引用保留多长时间。为了使代码安全,它必须至少与结构保持相同的时间

您需要在结构上定义一个生存期参数,并将其用于字符串切片

struct Excel<'a> {
    columns: HashMap<&'a str, Vec<f64>>
}

更准确的说法是,结构需要一个生存期参数(使用泛型),因此对于每个给定的生存期
'x
&'x str
,它可以存储在相应的类型
Excel(&'a self)->Excel中。字符串键建议也很好。这通常是你想要的。
struct Excel {
    columns: HashMap<String, Vec<f64>>
}