Struct cursive::utils::ProgressReader [−][src]
pub struct ProgressReader<R> where
R: Read, { /* fields omitted */ }
Expand description
Wrapper around a Read
that reports the progress made.
Used to monitor a file downloading or other slow IO task in a progress bar.
Examples
use std::io::Read;
use cursive_core::utils::{Counter, ProgressReader};
// Read a file and report the progress
let file = std::fs::File::open("large_file").unwrap();
let counter = Counter::new(0);
let mut reader = ProgressReader::new(counter.clone(), file);
std::thread::spawn(move || {
// Left as an exercise: use an AtomicBool for a stop condition!
loop {
let progress = counter.get();
println!("Read {} bytes so far", progress);
}
});
// As we read data, the counter will be updated and the control thread
// will monitor the progress.
let mut buffer = Vec::new();
reader.read_to_end(&mut buffer).unwrap();
Implementations
pub fn new(counter: Counter, reader: R) -> ProgressReader<R>ⓘNotable traits for ProgressReader<R>impl<R> Read for ProgressReader<R> where
R: Read,
pub fn new(counter: Counter, reader: R) -> ProgressReader<R>ⓘNotable traits for ProgressReader<R>impl<R> Read for ProgressReader<R> where
R: Read,
impl<R> Read for ProgressReader<R> where
R: Read,
Creates a new ProgressReader
around reader
.
counter
will be updated with the number of bytes read.
You should make sure the progress bar knows how many bytes should be received.
Unwraps this ProgressReader
, returning the reader and counter.
Trait Implementations
pub fn clone(&self) -> ProgressReader<R>ⓘNotable traits for ProgressReader<R>impl<R> Read for ProgressReader<R> where
R: Read,
pub fn clone(&self) -> ProgressReader<R>ⓘNotable traits for ProgressReader<R>impl<R> Read for ProgressReader<R> where
R: Read,
impl<R> Read for ProgressReader<R> where
R: Read,
Returns a copy of the value. Read more
Performs copy-assignment from source
. Read more
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Like read
, except that it reads into a slice of buffers. Read more
can_vector
)Determines if this Read
er has an efficient read_vectored
implementation. Read more
Read all bytes until EOF in this source, placing them into buf
. Read more
Read all bytes until EOF in this source, appending them to buf
. Read more
Read the exact number of bytes required to fill buf
. Read more
read_buf
)Pull some bytes from this source into the specified buffer. Read more
read_buf
)Read the exact number of bytes required to fill buf
. Read more
Creates a “by reference” adaptor for this instance of Read
. Read more
Creates an adapter which will chain this stream with another. Read more
Auto Trait Implementations
impl<R> RefUnwindSafe for ProgressReader<R> where
R: RefUnwindSafe,
impl<R> Send for ProgressReader<R> where
R: Send,
impl<R> Sync for ProgressReader<R> where
R: Sync,
impl<R> Unpin for ProgressReader<R> where
R: Unpin,
impl<R> UnwindSafe for ProgressReader<R> where
R: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
An iterator over input events.
An iterator over key inputs.
pub fn events_and_raw(self) -> EventsAndRaw<R>ⓘ
pub fn events_and_raw(self) -> EventsAndRaw<R>ⓘ
An iterator over input events and the bytes that define them.
Calls the given closure and return the result. Read more
Calls the given closure on self
.