Метод lines
Метод lines возвращает итератор, который
поочерёдно выдаёт строки из буферизованного
источника данных. Каждый элемент итератора
имеет тип Result<String, std::io::Error>.
Метод не принимает параметров и вызывается
на типе, реализующем трейт BufRead,
например на BufReader или Stdin.
Синтаксис
bufread.lines()
Пример
Давайте прочитаем строки из буферизованного читателя, созданного на основе байтового среза:
use std::io::BufRead;
use std::io::BufReader;
fn main()
{
let data = "abcde\n12345\nxyz";
let reader = BufReader::new(data.as_bytes());
for line in reader.lines() {
let line = line.unwrap();
println!("{}", line);
}
}
Результат выполнения кода:
"abcde"
"12345"
"xyz"
Пример
Давайте соберём все строки из читателя
в вектор при помощи метода collect:
use std::io::BufRead;
use std::io::BufReader;
fn main()
{
let data = "abcde\n12345\nxyz";
let reader = BufReader::new(data.as_bytes());
let res: Vec<String> = reader
.lines()
.map(|l| l.unwrap())
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
["abcde", "12345", "xyz"]
Пример
Давайте подсчитаем количество строк в буферизованном читателе:
use std::io::BufRead;
use std::io::BufReader;
fn main()
{
let data = "abcde\n12345\nxyz";
let reader = BufReader::new(data.as_bytes());
let res = reader.lines().count();
println!("{}", res);
}
Результат выполнения кода:
3