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

pub struct ProgressReader<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::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();

Methods

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

pub fn new(counter: Counter, reader: R) -> Self[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 + Read> Clone for ProgressReader<R>[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

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

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

fn read_vectored(&mut self, bufs: &mut [IoSliceMut]) -> Result<usize, Error>1.36.0[src]

Like read, except that it reads into a slice of buffers. Read more

unsafe fn initializer(&self) -> Initializer[src]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader can work with buffers of uninitialized memory. Read more

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>1.0.0[src]

Read all bytes until EOF in this source, placing them into buf. Read more

fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>1.0.0[src]

Read all bytes until EOF in this source, appending them to buf. Read more

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>1.6.0[src]

Read the exact number of bytes required to fill buf. Read more

fn by_ref(&mut self) -> &mut Self1.0.0[src]

Creates a "by reference" adaptor for this instance of Read. Read more

fn bytes(self) -> Bytes<Self>1.0.0[src]

Transforms this Read instance to an [Iterator] over its bytes. Read more

fn chain<R>(self, next: R) -> Chain<Self, R> where
    R: Read
1.0.0[src]

Creates an adaptor which will chain this stream with another. Read more

fn take(self, limit: u64) -> Take<Self>1.0.0[src]

Creates an adaptor which will read at most limit bytes from it. Read more

Auto Trait Implementations

impl<R> Unpin for ProgressReader<R> where
    R: Unpin

impl<R> Sync for ProgressReader<R> where
    R: Sync

impl<R> Send for ProgressReader<R> where
    R: Send

impl<R> UnwindSafe for ProgressReader<R> where
    R: UnwindSafe

impl<R> RefUnwindSafe for ProgressReader<R> where
    R: RefUnwindSafe

Blanket Implementations

impl<T> From<T> for T[src]

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

type Owned = T

The resulting type after obtaining ownership.

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

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

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

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

impl<T> Erased for T[src]