Rust嵌套循环在内部循环中只进行一次



我正在从文本文件中获取数据

let fil1_json = File::open("fil1.json")?;
let mut fil1_json_reader = BufReader::new(fil1_json);
let fil2_json = File::open("fil2.json")?;
let mut fil2_json_reader = BufReader::new(fil2_json);
for fil1_line in fil1_json_reader.by_ref().lines() {
for fil2_line in fil2_json_reader.by_ref().lines() {
println!("{:#?} ----- {:#?}", fil1_line, fil2_line);
}
}

在第二个嵌套循环中,它只进入一次内部。看起来fil2_json_reader在第一次迭代后被清空了。

它在哪里改变,就像我在任何地方都没有改变一样?

它在哪里更改,因为我在任何地方都没有更改?

读卡器使用数据。在File的情况下,这是自然的期望,因为文件抽象几乎都有一个游标,每次读取时都会前进。

如果您想在同一数据上迭代几次,那么显而易见的选择是将其保存到内存中(通常在拆分为lines()之前,但您也可以保存这些数据的向量,即使速度较慢(。然而,由于读取器由实际文件支持,因此最好通过seek从头开始对文件进行重新迭代:

fil2_json_reader.seek(SeekFrom::Start(0))

最新更新