Struct uu_tail::chunks::BytesChunkBuffer
source · pub struct BytesChunkBuffer { /* private fields */ }Expand description
An abstraction layer on top of BytesChunk mainly to simplify filling only the needed amount
of chunks. See also Self::fill.
Implementations§
source§impl BytesChunkBuffer
impl BytesChunkBuffer
sourcepub fn new(num_print: u64) -> Self
pub fn new(num_print: u64) -> Self
Creates a new BytesChunkBuffer.
Arguments
num_print: The number of bytes to print
Examples
ⓘ
let mut chunk = BytesChunk::new();
chunk.buffer[1] = 1;
chunk.bytes = 2;
let new_chunk = BytesChunk::from_chunk(&chunk, 0);
assert_eq!(2, new_chunk.get_buffer().len());
assert_eq!(&[0, 1], new_chunk.get_buffer());
let new_chunk = BytesChunk::from_chunk(&chunk, 1);
assert_eq!(1, new_chunk.get_buffer().len());
assert_eq!(&[1], new_chunk.get_buffer());sourcepub fn fill(&mut self, reader: &mut impl BufRead) -> UResult<()>
pub fn fill(&mut self, reader: &mut impl BufRead) -> UResult<()>
Fills this buffer with chunks and consumes the reader completely. This method ensures that
there are exactly as many chunks as needed to match self.num_print bytes, so there are
in sum exactly self.num_print bytes stored in all chunks. The method returns an iterator
over these chunks. If there are no chunks, for example because the piped stdin contained no
bytes, or num_print = 0 then iterator.next returns None.
Examples
ⓘ
use crate::chunks::BytesChunkBuffer;
use std::io::{BufReader, Cursor};
let mut reader = BufReader::new(Cursor::new(""));
let num_print = 0;
let mut chunks = BytesChunkBuffer::new(num_print);
chunks.fill(&mut reader).unwrap();
let mut reader = BufReader::new(Cursor::new("a"));
let num_print = 1;
let mut chunks = BytesChunkBuffer::new(num_print);
chunks.fill(&mut reader).unwrap();pub fn print(&self, writer: impl Write) -> UResult<()>
pub fn has_data(&self) -> bool
Auto Trait Implementations§
impl RefUnwindSafe for BytesChunkBuffer
impl Send for BytesChunkBuffer
impl Sync for BytesChunkBuffer
impl Unpin for BytesChunkBuffer
impl UnwindSafe for BytesChunkBuffer
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more