copy/
copy.rs

1use std::{
2    fs::File,
3    io::{self, Read},
4};
5
6use transfer_progress::Transfer;
7
8fn main() -> io::Result<()> {
9    let reader = File::open("/dev/urandom")?.take(1024 * 1024 * 1024); // 1 GiB
10    let writer = io::sink();
11
12    // Create the transfer monitor
13    let transfer = Transfer::new(reader, writer);
14
15    while !transfer.is_complete() {
16        std::thread::sleep(std::time::Duration::from_secs(1));
17        // {:#} makes Transfer use SI units (MiB instead of MB)
18        println!("{:#}", transfer);
19    }
20
21    // Catch any errors and retrieve the reader and writer
22    let (_reader, _writer) = transfer.finish()?;
23    Ok(())
24}