[−][src]Struct cursive::utils::ProgressReader
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
impl<R> ProgressReader<R> where
R: Read,
[src]
R: Read,
pub fn new(counter: Counter, reader: R) -> ProgressReader<R>
[src]
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.
pub fn deconstruct(self) -> (R, Counter)
[src]
Unwraps this ProgressReader
, returning the reader and counter.
Trait Implementations
impl<R> Clone for ProgressReader<R> where
R: Read + Clone,
[src]
R: Read + Clone,
fn clone(&self) -> ProgressReader<R>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<R> Debug for ProgressReader<R> where
R: Read + Debug,
[src]
R: Read + Debug,
impl<R> Read for ProgressReader<R> where
R: Read,
[src]
R: Read,
fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>
[src]
fn read_vectored(&mut self, bufs: &mut [IoSliceMut]) -> Result<usize, Error>
1.36.0[src]
fn is_read_vectored(&self) -> bool
[src]
unsafe fn initializer(&self) -> Initializer
[src]
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
1.0.0[src]
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
1.0.0[src]
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
1.6.0[src]
fn by_ref(&mut self) -> &mut Self
1.0.0[src]
fn bytes(self) -> Bytes<Self>
1.0.0[src]
fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read,
1.0.0[src]
R: Read,
fn take(self, limit: u64) -> Take<Self>
1.0.0[src]
Auto Trait Implementations
impl<R> RefUnwindSafe for ProgressReader<R> where
R: RefUnwindSafe,
R: RefUnwindSafe,
impl<R> Send for ProgressReader<R> where
R: Send,
R: Send,
impl<R> Sync for ProgressReader<R> where
R: Sync,
R: Sync,
impl<R> Unpin for ProgressReader<R> where
R: Unpin,
R: Unpin,
impl<R> UnwindSafe for ProgressReader<R> where
R: UnwindSafe,
R: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Erased for T
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.