РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
799 of 1245 menu

Метод 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,
    который представляет собой общий интерфейс для чтения байт
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить