Как решить ошибку с заимствованием?
Форум — Development
мне нужно в условии присваивать возвращаемое значение ошибка вроде понятна это в одновременном изменяемом и не изменяемом взаимствование но я не знаю как решить эту проблему
use std::fs::File;
use std::io::Read;
use std::path::Path;
use std::ffi::OsString;
use std::collections::HashMap;
extern crate tokenize;
use tokenize::tokenize::words;
extern crate rfts;
use rfts::rfts::{indexing, ftsearch, update};
fn main() {
let mut upd: HashMap<&str, Vec<(u32, u32)>> = HashMap::new();
let paths = std::fs::read_dir("./my_folder").unwrap();
let mut vf = vec![];
let mut tok:String = Default::default();
let folder = "./my_folder/".to_string();
for path in paths {
vf.push(path.expect("REASON").file_name());
}
for i in 0..vf.len() {
let mut contents = String::new();
let file = File::open(folder.clone() + &vf[i].clone().into_string().unwrap());
file.expect("REASON").read_to_string(&mut contents).unwrap();
{
let t = &mut tok;
*t = words(contents);
}
let v = tok.split(" ").collect::<Vec<_>>();
let ind = indexing(v, i.try_into().unwrap());
if i == 0 {
upd = ind.clone();
} else {
upd = update(ind, upd);
}
}
println!("{:?}", upd);
}
ошибка
error[E0502]: cannot borrow tok
as mutable because it is also borrowed as immutable
–> src/main.rs:25:21
|
25 | let t = &mut tok;
| ^^^^^^^^ mutable borrow occurs here
…
28 | let v = tok.split(" ").collect::>();
| ————– immutable borrow occurs here
…
33 | upd = update(ind, upd);
| — immutable borrow later used here