Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 返回的HashMap中缺少生存期说明符<&;i32,SimpleCallback>;_Rust - Fatal编程技术网

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位整数的引用。考虑重新阅读这本书的相关部分:这能回答你的问题吗?