我正在尝试编写类似Excel的数据结构:
use std::collections::HashMap;
struct Excel {
columns: HashMap<&str, Vec<f64>>,
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
error[E0106]: missing lifetime specifier
--> src/main.rs:4:22
|
4 | columns: HashMap<&str, Vec<f64>>,
| ^ expected lifetime parameter
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解发生了什么吗?
evi*_*one 25
"缺少生命周期说明符"意味着在结构定义中,您没有告诉它允许保留对字符串切片的引用多长时间.为了使您的代码安全,它必须至少与结构一样长.
您需要在结构上定义一个生命周期参数,并将其用于字符串切片.
struct Excel<'a> {
columns: HashMap<&'a str, Vec<f64>>
}
Run Code Online (Sandbox Code Playgroud)
这表示字符串切片(HashMap键)具有由Excel结构的用户参数化的一些生命周期.生命周期是Rust的关键特征之一.您可以在Rust文档中阅读有关生命周期的更多信息.
通常,定义拥有该字符串的结构更简单.然后你可以使用String.
struct Excel {
columns: HashMap<String, Vec<f64>>
}
Run Code Online (Sandbox Code Playgroud)