[英]Rust: access line in file by index, or is there another way to compare two lines
我有一個簡單的 txt 文件,每行一個值。 是否有可能比較兩條線?
我正在尋找一種方法來索引每一行,然后將索引 [n] 與索引 [n+1] 進行比較。 現在我可以打印每一行,但不能比較條目。
這是我的代碼:
use std::fs::File;
use std::env;
use std::io::{self, BufReader, BufRead};
fn read_file(filename: &String) -> io::Result<()> {
let file = File::open(filename)?;
let content = BufReader::new(file);
for line in content.lines() {
println!("{}", line.unwrap());
}
Ok(())
}
fn main() {
let args: Vec<String> = env::args().collect();
let filename = &args[1];
read_file(filename).expect("error reading file");
}
一種解決方案是將所有行收集到一個向量中並使用std::iter::zip
function 。
fn read_file(filename: &String) -> io::Result<()> {
let file = File::open(filename)?;
let content = BufReader::new(file);
let lines: Vec<String> = content
.lines()
.map(|line| line.expect("Something went wrong"))
.collect();
for (current, next) in lines.iter().zip(lines.iter().skip(1)) {
println!("{}, {}", current, next)
}
Ok(())
}
所以對於有內容的輸入文件,
1
2
3
4
read_file
function 將打印
1, 2
2, 3
3, 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.