[][src]Struct cursive::utils::ProgressReader

pub struct ProgressReader<R> where
    R: Read
{ /* fields omitted */ }

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]

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]

impl<R> Debug for ProgressReader<R> where
    R: Read + Debug
[src]

impl<R> Read for ProgressReader<R> where
    R: Read
[src]

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[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]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> With for T[src]