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

Метод take

Метод take класса Read создаёт адаптер Take, который ограничивает чтение из исходного потока заданным количеством байт. Параметром метод принимает число - максимальное количество байт, которое разрешено прочитать из потока. После исчерпания лимита адаптер возвращает Ok(0), сигнализируя о конце данных.

Синтаксис

reader.take(limit)

Пример

Давайте ограничим чтение из потока "abcde" тремя байтами и прочитаем результат в строку:

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

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

"abc"

Пример

Если лимит превышает размер потока, будет прочитано всё содержимое. Давайте зададим лимит 10 для строки "abcde":

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

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

"abcde"

Пример

Давайте проверим, сколько байт осталось доступно после чтения, с помощью метода limit адаптера Take:

use std::io::Read; fn main() { let data = "abcde".as_bytes(); let mut reader = data.take(3); let mut buf = [0u8; 5]; reader.read(&mut buf).unwrap(); println!("{}", reader.limit()); }

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

0

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

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