Метод read_exact
Метод read_exact класса Read читает
ровно столько байт, сколько помещается в переданный
буфер. Если поток завершится раньше, чем буфер будет
заполнен, метод вернёт ошибку. Параметром метод
принимает изменяемую ссылку на буфер, в который
будут записаны прочитанные байты.
Синтаксис
read.read_exact(&mut buf)
Пример
Давайте прочитаем ровно 5 байт из среза байтов
"abcde" в буфер:
use std::io::{Read, Cursor};
fn main()
{
let mut reader = Cursor::new(b"abcde");
let mut buf = [0u8; 5];
reader.read_exact(&mut buf).unwrap();
let res = String::from_utf8_lossy(&buf);
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте попробуем прочитать 5 байт из потока, в котором доступно только 3 байта:
use std::io::{Read, Cursor};
fn main()
{
let mut reader = Cursor::new(b"abc");
let mut buf = [0u8; 5];
let res = reader.read_exact(&mut buf);
println!("{}", res.is_err());
}
Результат выполнения кода:
true
Смотрите также
-
метод
read,
который читает данные в буфер, возвращая количество прочитанных байт -
метод
read_to_string,
который читает всё содержимое в строку -
метод
read_to_end,
который читает все байты до конца потока в вектор -
трейт
Read,
который представляет собой общий интерфейс для чтения байт