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}