Вы не можете получить доступ к значению, если право собственности было перенесено ранее.Однако вы можете проверять свои строки с помощью inspect , не изменяя внутренних линий, а только обновляя счет.
После того, как вы узнаете count
путем итерации строк, вы можете повторить его сноваи действуйте по своему усмотрению.
Основная причина, по которой вы получаете эту ошибку компилятора: count функция использует используемые вами строки, и вы не можете снова получить доступ к своей переменной, так как онауже потреблено.
Вот решение:
use std::fs::File;
use std::io::{BufRead, BufReader, Write};
fn main() {
let path = "lines.txt";
let mut output = File::create(path).unwrap();
write!(output, "Rust\n?\nFun").unwrap();
let input = File::open(path).unwrap();
let buffered = BufReader::new(input);
let lines: Vec<_> = buffered.lines().collect();
let total = lines.len();
for (index, sentence) in lines.into_iter().enumerate() {
let line = sentence.unwrap();
println!("Processed {} of {}, {}", index, total, line);
}
println!("Total {}", total);
}
Детская площадка
Таким образом, вам не нужно читатьподать дважды.Вы только повторяете это дважды.