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

Трейт Read

Трейт Read представляет собой абстракцию над источником байтов, из которого можно читать данные. Он определяет базовый метод read, принимающий изменяемый срез байтов &mut [u8], в который записываются прочитанные данные, и возвращающий количество прочитанных байтов Result<usize, io::Error>. На основе этого метода трейт предоставляет множество удобных методов: read_to_string, read_to_end, read_exact, bytes, chain, take и другие. Параметром метод read принимает буфер, в который будут записаны прочитанные байты.

Синтаксис

fn read(&mut self, buf: &mut [u8]) -> Result<usize> fn read_to_string(&mut self, buf: &mut String) -> Result<usize> fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize> fn read_exact(&mut self, buf: &mut [u8]) -> Result<()>

Пример

Давайте прочитаем данные из среза байтов с помощью метода read:

use std::io::Read; fn main() { let data: &[u8] = b"abcde"; let mut reader = data; let mut buf = [0u8; 5]; let n = reader.read(&mut buf).unwrap(); println!("{}", n); println!("{:?}", std::str::from_utf8(&buf).unwrap()); }

Результат выполнения кода:

5 "abcde"

Пример

Давайте прочитаем всё содержимое в строку с помощью метода read_to_string:

use std::io::Read; fn main() { let data: &[u8] = b"abcde"; let mut reader = data; let mut res = String::new(); reader.read_to_string(&mut res).unwrap(); println!("{}", res); }

Результат выполнения кода:

"abcde"

Пример

Давайте прочитаем все байты в вектор с помощью метода read_to_end:

use std::io::Read; fn main() { let data: &[u8] = b"12345"; let mut reader = data; let mut res: Vec<u8> = Vec::new(); reader.read_to_end(&mut res).unwrap(); println!("{:?}", res); }

Результат выполнения кода:

[49, 50, 51, 52, 53]

Пример

Давайте прочитаем ровно 3 байта с помощью метода read_exact:

use std::io::Read; fn main() { let data: &[u8] = b"abcde"; let mut reader = data; let mut buf = [0u8; 3]; reader.read_exact(&mut buf).unwrap(); println!("{:?}", std::str::from_utf8(&buf).unwrap()); }

Результат выполнения кода:

"abc"

Смотрите также

  • метод read,
    который читает байты в указанный буфер
  • метод read_to_string,
    который читает всё содержимое в строку
  • метод read_to_end,
    который читает все байты в вектор
  • метод bytes,
    который возвращает итератор по байтам источника
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить