首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可变地借用循环中的散列映射

可变地借用循环中的散列映射
EN

Stack Overflow用户
提问于 2022-06-13 17:12:28
回答 1查看 163关注 0票数 1

在循环的每一次迭代中,我都想借用一个散列映射。

我有以下的散列映射、函数和循环:

代码语言:javascript
运行
复制
use std::collections::HashMap;

fn func<'a>(hash_map: &'a mut HashMap<&'a str, String>) {
    unimplimented!();
}

fn loop() {
    let mut hash_map = HashMap::new();

    let mut i = 0;
    while i < 10 {
        func(&mut hash_map);
        i += 1;
    }
}

这将在func(&mut hash_map);行上产生以下错误:

代码语言:javascript
运行
复制
cannot borrow `hash_map` as mutable more than once at a time

`hash_map` was mutably borrowed here in the previous iteration of the looprustc(E0499)

main.rs(62, 25): `hash_map` was mutably borrowed here in the previous iteration of the loop

,我如何重构它,以便能够在循环的每一次迭代中不断地借用哈希映射?

我相信我对Rust的所有权规则有足够的理解,足以理解为什么会发生这个错误,只是不足以修复它。

注意:我知道有更好的方法来用Rust编写一个循环,只是想要一个非常简单的循环。

EN

回答 1

Stack Overflow用户

发布于 2022-06-13 17:29:11

看起来我在函数参数类型定义中使用了不需要的生命周期。而不是hash_map: &'a mut HashMap<&'a str, String>,我只需要使用hash_map: &mut HashMap<&'a str, String>

下面的代码适用于我。

代码语言:javascript
运行
复制
use std::collections::HashMap;
use external::func;

fn func<'a>(hash_map: &mut HashMap<&'a str, String>) {
    unimplimented!();
}

fn loop() {
    let mut hash_map = HashMap::new();

    let mut i = 0;
    while i < 10 {
        func(&mut hash_map);
        i += 1;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72606657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档