问题描述
我有一个元组向量,每个元组包含两个字符串。我想将两个字符串(之一)作为可变引用传输到哈希图中。另一个字符串也被传输,但不必是可变的。背景是我想稍后用另一个字符串的值覆盖一个字符串。
给定以下代码:
use std::collections::HashMap;
fn main() {
let mut foo = String::from("foo");
let mut bar = String::from("bar");
let mut v = vec![(foo,&mut bar)];
let mut counter: HashMap<&str,(&str,&mut String,u8)> = HashMap::new();
create_counter(&mut v,&mut counter);
}
fn create_counter<'a>(
rows: &'a mut Vec<(String,&'a mut String)>,counter: &mut HashMap<&'a str,(&'a str,&'a mut String,u8)>,) {
let mut skip_count = 0;
let len = rows.len();
for i in 0..len {
if i == len - 1 {
break;
}
if skip_count > 0 {
skip_count -= 1;
continue;
}
let r = rows[i..i + 3].as_mut();
if r[0].0 == r[1].0 && r[0].1 != r[1].1 {
if r.len() == 2 || r[0].0 != r[2].0 {
counter.entry(&r[0].0).or_insert((r[1].1,&mut r[0].1,0)).2 += 1;
skip_count = 1;
} else {
skip_count = 2;
}
}
}
}
不幸的是,借用检查器不允许这样做,并给了我两条错误消息:
cannot borrow `*rows` as mutable more than once at a time
cannot borrow `r[_].1` as mutable because it is also borrowed as immutable
我理解这个问题,但不幸的是我不知道如何最好地解决它。
有人可以帮我解决这两个问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)