Rust - как прочитать несколько байт из буффера?
Задача: нужно получить первую строку из файла, либо первые n-байт из файла. Можно это сделать без цикла из буффера? Смысл - получить первую строку, в ней будет дата, на основании анализа этой даты уже либо выполнять цикл и читать весь буффер или не выполнять цикл.
let file_log = PathBuf::from(r"./log");
let input = File::open(file_log).expect("Should have been able to read the file");
let f = BufReader::new(input);
Ответы (1 шт):
Автор решения: Be3y4uu_K0T
→ Ссылка
Используйте вначале take, а затем уже read_line. Метод take создаст объект Take, но не будет брать явно из буфера данные, просто установит предел. Уже метод read_line обратиться и возьмет всю строчку или до установленного предела.
Пример:
use std::{
fs::File,
io::{BufRead, BufReader, Read, Result},
};
fn main() -> Result<()> {
let file = File::open(r"./log")?;
let buffer = BufReader::new(file);
let mut line = String::new();
let limit = 64;
// Метод `read_line` доступен, если `take` создан из объекта,
// реализующего BufReader [1]
// А также нужно `use std::io::BufRead;`, чтобы метод был виден
let _ = buffer.take(limit).read_line(&mut line)?;
println!("{line}");
Ok(())
}