Rust 返回的HashMap中缺少生存期说明符<&;i32,SimpleCallback>;
考虑以下几点:Rust 返回的HashMap中缺少生存期说明符<&;i32,SimpleCallback>;,rust,Rust,考虑以下几点: use std::collections::HashMap; use std::vec::Vec; use crate::core::process_call_backs::SimpleCallback; pub fn make_adventure_list(adventure_list: Vec<SimpleCallback>) -> HashMap<&i32, SimpleCallback> { let mut adventur
use std::collections::HashMap;
use std::vec::Vec;
use crate::core::process_call_backs::SimpleCallback;
pub fn make_adventure_list(adventure_list: Vec<SimpleCallback>) -> HashMap<&i32, SimpleCallback> {
let mut adventures = HashMap::new();
let mut count = 1;
for adventure in adventure_list {
adventures.insert(count, adventure);
count = count + 1;
}
adventures;
}
使用std::collections::HashMap;
使用std::vec::vec;
使用crate::core::process_call_backs::SimpleCallback;
pub fn make_adventure_list(adventure_list:Vec)->HashMap{
让mut冒险家=HashMap::new();
让mut count=1;
在“冒险”列表中进行冒险{
冒险。插入(计数,冒险);
计数=计数+1;
}
冒险;
}
我得到一个错误:
error[E0106]: missing lifetime specifier
--> core/src/core/create_adventures.rs:5:76
|
5 | pub fn make_adventure_list(adventure_list: Vec<SimpleCallback>) -> HashMap<&i32, SimpleCallback> {
| ^ help: consider giving it an explicit bounded or 'static lifetime: `&'static`
|
= help: this function's return type contains a borrowed value with an elided lifetime, but the lifetime cannot be derived from the arguments
错误[E0106]:缺少生存期说明符
-->core/src/core/create_adventures.rs:5:76
|
5 |发布fn制作冒险列表(冒险列表:Vec)->HashMap{
帮助:考虑给它一个明确的有界或静态的生命周期:和“静态”
|
=帮助:此函数的返回类型包含具有省略生存期的借用值,但生存期不能从参数派生
我理解此错误的含义,但不知道如何实现修复。我是否需要使
adventure\u list
可变?我猜您希望将数字映射到回调。但您编写的是将引用映射到数字到回调
现在,引用有一个生命周期。在您的例子中,您从只存在于函数内部的count
开始。因此,即使您希望在结果中引用(即有引用),这也会出错,因为count
在函数末尾超出范围
几乎可以肯定的是,您希望的结果类型是HashMap
备注:由于引用有生命周期,Rust建议添加一个
静态
生命周期,这意味着您有可用于整个程序运行的数字引用(而不是仅在您的函数中)但是,正如你所说的,你几乎肯定不想引用数字,只是简单的数字。< /P>快速解决方案是从<代码>和i32 < /代码>中删除<代码>和<代码>,你几乎肯定想要一个32位整数作为你的密钥,而不是一个32位整数的引用。考虑重新阅读这本书的相关部分:这能回答你的问题吗?