Rust 什么是;缺少生存期说明符“;存储&;结构中的str?
我正在尝试编写类似Excel的数据结构: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:
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>>
}