Struct fencryption_lib::io::Chain
source · pub struct Chain<R1: Read, R2: Read> { /* private fields */ }Expand description
Adapter to chain two readers together.
It might seem the exact same as std::io::Chain but it
is not. The difference is that when it reaches the end of
the first reader, it fills the rest of the buffer with
the first bytes from the second reader, what std::io::Chain
doesn’t do.
Implementations§
Trait Implementations§
source§impl<R1: Read, R2: Read> Read for Chain<R1, R2>
impl<R1: Read, R2: Read> Read for Chain<R1, R2>
source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning how many bytes were read.
Example:
use std::io::Read;
use fencryption_lib::io::Chain;
let text = "Never gonna give you up ! Never gonna let you down !";
let mut source = Chain::new([255u8; 41].as_ref(), text.as_bytes());
let mut buf = vec![0u8; 16];
loop {
let read_len = source.read(&mut buf).unwrap();
println!("{:x?} {}", &buf[..read_len], read_len);
if read_len != buf.len() {
break;
}
}Output:
[ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff] 16
[ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff] 16
[ff, ff, ff, ff, ff, ff, ff, ff, ff, 4e, 65, 76, 65, 72, 20, 67] 16
[6f, 6e, 6e, 61, 20, 67, 69, 76, 65, 20, 79, 6f, 75, 20, 75, 70] 16
[20, 21, 20, 4e, 65, 76, 65, 72, 20, 67, 6f, 6e, 6e, 61, 20, 6c] 16
[65, 74, 20, 79, 6f, 75, 20, 64, 6f, 77, 6e, 20, 21] 13
1.36.0 · source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like
read, except that it reads into a slice of buffers. Read moresource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector)1.0.0 · source§fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
Read all bytes until EOF in this source, placing them into
buf. Read more1.0.0 · source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Read all bytes until EOF in this source, appending them to
buf. Read more1.6.0 · source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Read the exact number of bytes required to fill
buf. Read moresource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf)Pull some bytes from this source into the specified buffer. Read more
source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf)Read the exact number of bytes required to fill
cursor. Read more1.0.0 · source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,
Creates a “by reference” adaptor for this instance of
Read. Read moreAuto Trait Implementations§
impl<R1, R2> RefUnwindSafe for Chain<R1, R2>where R1: RefUnwindSafe, R2: RefUnwindSafe,
impl<R1, R2> Send for Chain<R1, R2>where R1: Send, R2: Send,
impl<R1, R2> Sync for Chain<R1, R2>where R1: Sync, R2: Sync,
impl<R1, R2> Unpin for Chain<R1, R2>where R1: Unpin, R2: Unpin,
impl<R1, R2> UnwindSafe for Chain<R1, R2>where R1: UnwindSafe, R2: UnwindSafe,
Blanket Implementations§
§impl<R> ReadBytesExt for Rwhere
R: Read + ?Sized,
impl<R> ReadBytesExt for Rwhere R: Read + ?Sized,
§fn read_u8(&mut self) -> Result<u8, Error>
fn read_u8(&mut self) -> Result<u8, Error>
Reads an unsigned 8 bit integer from the underlying reader. Read more
§fn read_i8(&mut self) -> Result<i8, Error>
fn read_i8(&mut self) -> Result<i8, Error>
Reads a signed 8 bit integer from the underlying reader. Read more
§fn read_u16<T>(&mut self) -> Result<u16, Error>where
T: ByteOrder,
fn read_u16<T>(&mut self) -> Result<u16, Error>where T: ByteOrder,
Reads an unsigned 16 bit integer from the underlying reader. Read more
§fn read_i16<T>(&mut self) -> Result<i16, Error>where
T: ByteOrder,
fn read_i16<T>(&mut self) -> Result<i16, Error>where T: ByteOrder,
Reads a signed 16 bit integer from the underlying reader. Read more
§fn read_u24<T>(&mut self) -> Result<u32, Error>where
T: ByteOrder,
fn read_u24<T>(&mut self) -> Result<u32, Error>where T: ByteOrder,
Reads an unsigned 24 bit integer from the underlying reader. Read more
§fn read_i24<T>(&mut self) -> Result<i32, Error>where
T: ByteOrder,
fn read_i24<T>(&mut self) -> Result<i32, Error>where T: ByteOrder,
Reads a signed 24 bit integer from the underlying reader. Read more
§fn read_u32<T>(&mut self) -> Result<u32, Error>where
T: ByteOrder,
fn read_u32<T>(&mut self) -> Result<u32, Error>where T: ByteOrder,
Reads an unsigned 32 bit integer from the underlying reader. Read more
§fn read_i32<T>(&mut self) -> Result<i32, Error>where
T: ByteOrder,
fn read_i32<T>(&mut self) -> Result<i32, Error>where T: ByteOrder,
Reads a signed 32 bit integer from the underlying reader. Read more
§fn read_u48<T>(&mut self) -> Result<u64, Error>where
T: ByteOrder,
fn read_u48<T>(&mut self) -> Result<u64, Error>where T: ByteOrder,
Reads an unsigned 48 bit integer from the underlying reader. Read more
§fn read_i48<T>(&mut self) -> Result<i64, Error>where
T: ByteOrder,
fn read_i48<T>(&mut self) -> Result<i64, Error>where T: ByteOrder,
Reads a signed 48 bit integer from the underlying reader. Read more
§fn read_u64<T>(&mut self) -> Result<u64, Error>where
T: ByteOrder,
fn read_u64<T>(&mut self) -> Result<u64, Error>where T: ByteOrder,
Reads an unsigned 64 bit integer from the underlying reader. Read more
§fn read_i64<T>(&mut self) -> Result<i64, Error>where
T: ByteOrder,
fn read_i64<T>(&mut self) -> Result<i64, Error>where T: ByteOrder,
Reads a signed 64 bit integer from the underlying reader. Read more
§fn read_u128<T>(&mut self) -> Result<u128, Error>where
T: ByteOrder,
fn read_u128<T>(&mut self) -> Result<u128, Error>where T: ByteOrder,
Reads an unsigned 128 bit integer from the underlying reader. Read more
§fn read_i128<T>(&mut self) -> Result<i128, Error>where
T: ByteOrder,
fn read_i128<T>(&mut self) -> Result<i128, Error>where T: ByteOrder,
Reads a signed 128 bit integer from the underlying reader. Read more
§fn read_uint<T>(&mut self, nbytes: usize) -> Result<u64, Error>where
T: ByteOrder,
fn read_uint<T>(&mut self, nbytes: usize) -> Result<u64, Error>where T: ByteOrder,
Reads an unsigned n-bytes integer from the underlying reader. Read more
§fn read_int<T>(&mut self, nbytes: usize) -> Result<i64, Error>where
T: ByteOrder,
fn read_int<T>(&mut self, nbytes: usize) -> Result<i64, Error>where T: ByteOrder,
Reads a signed n-bytes integer from the underlying reader. Read more
§fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error>where
T: ByteOrder,
fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error>where T: ByteOrder,
Reads an unsigned n-bytes integer from the underlying reader.
§fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error>where
T: ByteOrder,
fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error>where T: ByteOrder,
Reads a signed n-bytes integer from the underlying reader.
§fn read_f32<T>(&mut self) -> Result<f32, Error>where
T: ByteOrder,
fn read_f32<T>(&mut self) -> Result<f32, Error>where T: ByteOrder,
Reads a IEEE754 single-precision (4 bytes) floating point number from
the underlying reader. Read more
§fn read_f64<T>(&mut self) -> Result<f64, Error>where
T: ByteOrder,
fn read_f64<T>(&mut self) -> Result<f64, Error>where T: ByteOrder,
Reads a IEEE754 double-precision (8 bytes) floating point number from
the underlying reader. Read more
§fn read_u16_into<T>(&mut self, dst: &mut [u16]) -> Result<(), Error>where
T: ByteOrder,
fn read_u16_into<T>(&mut self, dst: &mut [u16]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of unsigned 16 bit integers from the underlying
reader. Read more
§fn read_u32_into<T>(&mut self, dst: &mut [u32]) -> Result<(), Error>where
T: ByteOrder,
fn read_u32_into<T>(&mut self, dst: &mut [u32]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of unsigned 32 bit integers from the underlying
reader. Read more
§fn read_u64_into<T>(&mut self, dst: &mut [u64]) -> Result<(), Error>where
T: ByteOrder,
fn read_u64_into<T>(&mut self, dst: &mut [u64]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of unsigned 64 bit integers from the underlying
reader. Read more
§fn read_u128_into<T>(&mut self, dst: &mut [u128]) -> Result<(), Error>where
T: ByteOrder,
fn read_u128_into<T>(&mut self, dst: &mut [u128]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of unsigned 128 bit integers from the underlying
reader. Read more
§fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<(), Error>
fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<(), Error>
Reads a sequence of signed 8 bit integers from the underlying reader. Read more
§fn read_i16_into<T>(&mut self, dst: &mut [i16]) -> Result<(), Error>where
T: ByteOrder,
fn read_i16_into<T>(&mut self, dst: &mut [i16]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of signed 16 bit integers from the underlying
reader. Read more
§fn read_i32_into<T>(&mut self, dst: &mut [i32]) -> Result<(), Error>where
T: ByteOrder,
fn read_i32_into<T>(&mut self, dst: &mut [i32]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of signed 32 bit integers from the underlying
reader. Read more
§fn read_i64_into<T>(&mut self, dst: &mut [i64]) -> Result<(), Error>where
T: ByteOrder,
fn read_i64_into<T>(&mut self, dst: &mut [i64]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of signed 64 bit integers from the underlying
reader. Read more
§fn read_i128_into<T>(&mut self, dst: &mut [i128]) -> Result<(), Error>where
T: ByteOrder,
fn read_i128_into<T>(&mut self, dst: &mut [i128]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of signed 128 bit integers from the underlying
reader. Read more
§fn read_f32_into<T>(&mut self, dst: &mut [f32]) -> Result<(), Error>where
T: ByteOrder,
fn read_f32_into<T>(&mut self, dst: &mut [f32]) -> Result<(), Error>where T: ByteOrder,
Reads a sequence of IEEE754 single-precision (4 bytes) floating
point numbers from the underlying reader. Read more
§fn read_f32_into_unchecked<T>(&mut self, dst: &mut [f32]) -> Result<(), Error>where
T: ByteOrder,
fn read_f32_into_unchecked<T>(&mut self, dst: &mut [f32]) -> Result<(), Error>where T: ByteOrder,
👎Deprecated since 1.2.0: please use
read_f32_into insteadDEPRECATED. Read more