Trait DataSource

Source
pub trait DataSource {
Show 33 methods // Required methods fn available(&self) -> usize; fn request(&mut self, count: usize) -> Result<bool>; fn read_bytes<'a>(&mut self, buf: &'a mut [u8]) -> Result<&'a [u8]>; fn read_utf8_to_end<'a>(&mut self, buf: &'a mut String) -> Result<&'a str>; // Provided methods fn require(&mut self, count: usize) -> Result { ... } fn read_exact_bytes<'a>(&mut self, buf: &'a mut [u8]) -> Result<&'a [u8]> { ... } fn read_array<const N: usize>(&mut self) -> Result<[u8; N]> where Self: Sized { ... } fn read_u8(&mut self) -> Result<u8> { ... } fn read_i8(&mut self) -> Result<i8> { ... } fn read_u16(&mut self) -> Result<u16> { ... } fn read_i16(&mut self) -> Result<i16> { ... } fn read_u16_le(&mut self) -> Result<u16> { ... } fn read_i16_le(&mut self) -> Result<i16> { ... } fn read_u32(&mut self) -> Result<u32> { ... } fn read_i32(&mut self) -> Result<i32> { ... } fn read_u32_le(&mut self) -> Result<u32> { ... } fn read_i32_le(&mut self) -> Result<i32> { ... } fn read_u64(&mut self) -> Result<u64> { ... } fn read_i64(&mut self) -> Result<i64> { ... } fn read_u64_le(&mut self) -> Result<u64> { ... } fn read_i64_le(&mut self) -> Result<i64> { ... } fn read_u128(&mut self) -> Result<u128> { ... } fn read_i128(&mut self) -> Result<i128> { ... } fn read_u128_le(&mut self) -> Result<u128> { ... } fn read_i128_le(&mut self) -> Result<i128> { ... } fn read_usize(&mut self) -> Result<usize> { ... } fn read_isize(&mut self) -> Result<isize> { ... } fn read_usize_le(&mut self) -> Result<usize> { ... } fn read_isize_le(&mut self) -> Result<isize> { ... } fn read_int<T: PrimInt + Pod>(&mut self) -> Result<T> where Self: Sized { ... } fn read_int_le<T: PrimInt + Pod>(&mut self) -> Result<T> where Self: Sized { ... } fn read_data<T: Pod>(&mut self) -> Result<T> where Self: Sized { ... } fn read_utf8<'a>( &mut self, count: usize, buf: &'a mut String, ) -> Result<&'a str> { ... }
}
Expand description

A source stream of data.

Required Methods§

Source

fn available(&self) -> usize

Returns the number of bytes available for reading.

Source

fn request(&mut self, count: usize) -> Result<bool>

Reads at most count bytes into an internal buffer, returning whether enough bytes are available. To return an end-of-stream error, use require instead.

Note that a request returning false doesn’t necessarily mean the stream has ended. More bytes may be read after.

Source

fn read_bytes<'a>(&mut self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Reads bytes into a slice, returning the bytes read.

Source

fn read_utf8_to_end<'a>(&mut self, buf: &'a mut String) -> Result<&'a str>

Reads UTF-8 bytes into buf until the end of the stream, returning the string read. If invalid bytes are encountered, an error is returned and buf is unchanged. In this case, the stream is left in a state with an undefined number of bytes read.

Provided Methods§

Source

fn require(&mut self, count: usize) -> Result

Reads at least count bytes into an internal buffer, returning the available count if successful, or an end-of-stream error if not. For a softer version that returns whether enough bytes are available, use request.

Source

fn read_exact_bytes<'a>(&mut self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Reads the exact length of bytes into a slice, returning the bytes read if successful, or an end-of-stream error if not. Bytes are not consumed if an end-of-stream error is returned.

Source

fn read_array<const N: usize>(&mut self) -> Result<[u8; N]>
where Self: Sized,

Reads an array with a size of N bytes.

Source

fn read_u8(&mut self) -> Result<u8>

Reads a u8.

Source

fn read_i8(&mut self) -> Result<i8>

Reads an i8.

Source

fn read_u16(&mut self) -> Result<u16>

Reads a big-endian u16.

Source

fn read_i16(&mut self) -> Result<i16>

Reads a big-endian i16.

Source

fn read_u16_le(&mut self) -> Result<u16>

Reads a little-endian u16.

Source

fn read_i16_le(&mut self) -> Result<i16>

Reads a little-endian i16.

Source

fn read_u32(&mut self) -> Result<u32>

Reads a big-endian u32.

Source

fn read_i32(&mut self) -> Result<i32>

Reads a big-endian i32.

Source

fn read_u32_le(&mut self) -> Result<u32>

Reads a little-endian u32.

Source

fn read_i32_le(&mut self) -> Result<i32>

Reads a little-endian i32.

Source

fn read_u64(&mut self) -> Result<u64>

Reads a big-endian u64.

Source

fn read_i64(&mut self) -> Result<i64>

Reads a big-endian i64.

Source

fn read_u64_le(&mut self) -> Result<u64>

Reads a little-endian u64.

Source

fn read_i64_le(&mut self) -> Result<i64>

Reads a little-endian i64.

Source

fn read_u128(&mut self) -> Result<u128>

Reads a big-endian u128.

Source

fn read_i128(&mut self) -> Result<i128>

Reads a big-endian i128.

Source

fn read_u128_le(&mut self) -> Result<u128>

Reads a little-endian u128.

Source

fn read_i128_le(&mut self) -> Result<i128>

Reads a little-endian i128.

Source

fn read_usize(&mut self) -> Result<usize>

Reads a big-endian usize. To make streams consistent across platforms, usize is fixed to the size of u64 regardless of the target platform.

Source

fn read_isize(&mut self) -> Result<isize>

Reads a big-endian isize. To make streams consistent across platforms, isize is fixed to the size of i64 regardless of the target platform.

Source

fn read_usize_le(&mut self) -> Result<usize>

Reads a little-endian usize. To make streams consistent across platforms, usize is fixed to the size of u64 regardless of the target platform.

Source

fn read_isize_le(&mut self) -> Result<isize>

Reads a little-endian isize. To make streams consistent across platforms, isize is fixed to the size of i64 regardless of the target platform.

Source

fn read_int<T: PrimInt + Pod>(&mut self) -> Result<T>
where Self: Sized,

Reads a big-endian integer.

Source

fn read_int_le<T: PrimInt + Pod>(&mut self) -> Result<T>
where Self: Sized,

Reads a little-endian integer.

Source

fn read_data<T: Pod>(&mut self) -> Result<T>
where Self: Sized,

Reads a value of generic type T supporting an arbitrary bit pattern. See Pod.

Source

fn read_utf8<'a>( &mut self, count: usize, buf: &'a mut String, ) -> Result<&'a str>

Reads up to count bytes of UTF-8 into buf, returning the string read. If invalid bytes are encountered, an error is returned and buf is unchanged. In this case, the stream is left in a state with up to count bytes consumed from it, including the invalid bytes and any subsequent bytes.

Implementations on Foreign Types§

Source§

impl DataSource for &[u8]

Source§

fn available(&self) -> usize

Source§

fn request(&mut self, count: usize) -> Result<bool>

Source§

fn read_bytes<'a>(&mut self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Source§

fn read_utf8<'a>( &mut self, count: usize, buf: &'a mut String, ) -> Result<&'a str>

Source§

fn read_utf8_to_end<'a>(&mut self, buf: &'a mut String) -> Result<&'a str>

Source§

impl<R: Read + ?Sized> DataSource for BufReader<R>

Source§

fn available(&self) -> usize

Source§

fn request(&mut self, count: usize) -> Result<bool>

Source§

fn read_bytes<'a>(&mut self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Source§

fn read_exact_bytes<'a>(&mut self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Source§

fn read_utf8_to_end<'a>(&mut self, buf: &'a mut String) -> Result<&'a str>

Implementors§