#reader-writer #transfer #byte-reader #monitor #progress #io #read

transfer-progress

Easily monitor the transfer of bytes from a reader to a writer

3 releases

0.1.2 Oct 7, 2021
0.1.1 Aug 19, 2021
0.1.0 Aug 19, 2021

#7 in #byte-reader

Download history 9/week @ 2024-11-16 9/week @ 2024-11-23 21/week @ 2024-12-07 61/week @ 2024-12-14 9/week @ 2025-01-04 39/week @ 2025-01-11 5/week @ 2025-01-18 35/week @ 2025-01-25 74/week @ 2025-02-01 40/week @ 2025-02-08 13/week @ 2025-02-15 4/week @ 2025-02-22 19/week @ 2025-03-01

80 downloads per month

MIT/Apache

16KB
190 lines

Transfer Progress

A small rust crate that allows you to monitor the speed, progress and estimated completion time of a transfer between a reader and a writer.

Internally, this spins up a new thread for each transfer, and uses the progress-streams crate to monitor it.

Example

use std::{
    fs::File,
    io::{self, Read},
};

use transfer_progress::Transfer;

fn main() -> io::Result<()> {
    let reader = File::open("/dev/urandom")?.take(1024 * 1024 * 1024); // 1 GiB
    let writer = io::sink();

    // Create the transfer monitor
    let transfer = Transfer::new(reader, writer);

    while !transfer.is_complete() {
        std::thread::sleep(std::time::Duration::from_secs(1));
        // {:#} makes Transfer use SI units (MiB instead of MB)
        println!("{:#}", transfer);
    }

    // Catch any errors and retrieve the reader and writer
    let (_reader, _writer) = transfer.finish()?;
    Ok(())
}

Dependencies

~45KB