[−][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>ⓘNotable traits for ProgressReader<R>
impl<R> Read for ProgressReader<R> where
R: Read,
[src]
Notable traits for ProgressReader<R>
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.
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,
pub fn clone(&self) -> ProgressReader<R>ⓘNotable traits for ProgressReader<R>
impl<R> Read for ProgressReader<R> where
R: Read,
[src]
Notable traits for ProgressReader<R>
impl<R> Read for ProgressReader<R> where
R: Read,
pub 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,
pub fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>
[src]
pub fn read_vectored(
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<usize, Error>
1.36.0[src]
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<usize, Error>
pub fn is_read_vectored(&self) -> bool
[src]
pub unsafe fn initializer(&self) -> Initializer
[src]
pub fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
1.0.0[src]
pub fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
1.0.0[src]
pub fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
1.6.0[src]
pub fn by_ref(&mut self) -> &mut Self
1.0.0[src]
pub fn bytes(self) -> Bytes<Self>
1.0.0[src]
pub fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read,
1.0.0[src]
R: Read,
pub fn take(self, limit: u64) -> Take<Self>
1.0.0[src]
Auto Trait Implementations
impl<R> RefUnwindSafe for ProgressReader<R> where
R: RefUnwindSafe,
[src]
R: RefUnwindSafe,
impl<R> Send for ProgressReader<R> where
R: Send,
[src]
R: Send,
impl<R> Sync for ProgressReader<R> where
R: Sync,
[src]
R: Sync,
impl<R> Unpin for ProgressReader<R> where
R: Unpin,
[src]
R: Unpin,
impl<R> UnwindSafe for ProgressReader<R> where
R: UnwindSafe,
[src]
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,
pub 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.
pub fn to_owned(&self) -> T
[src]
pub 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.
pub 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.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> With for T
[src]
pub fn wrap_with<U, F>(self, f: F) -> U where
F: FnOnce(Self) -> U,
[src]
F: FnOnce(Self) -> U,
pub fn with<F>(self, f: F) -> Self where
F: FnOnce(&mut Self),
[src]
F: FnOnce(&mut Self),
pub fn try_with<E, F>(self, f: F) -> Result<Self, E> where
F: FnOnce(&mut Self) -> Result<(), E>,
[src]
F: FnOnce(&mut Self) -> Result<(), E>,
pub fn with_if<F>(self, condition: bool, f: F) -> Self where
F: FnOnce(&mut Self),
[src]
F: FnOnce(&mut Self),