Struct transfer_progress::SizedTransfer [−][src]
pub struct SizedTransfer<R, W> where
R: Read + Send + 'static,
W: Write + Send + 'static, { /* fields omitted */ }Expand description
Monitors the progress of a transfer with a known size.
Implementations
Creates and starts a new SizedTransfer.
Example
use transfer_progress::SizedTransfer; use std::fs::File; use std::io::Read; let reader = File::open("file1.txt")?.take(1024); // Bytes let writer = File::create("file2.txt")?; let transfer = SizedTransfer::new(reader, writer, 1024);
Consumes the SizedTransfer, blocking until the transfer is complete.
If the transfer was successful, returns Ok(reader, writer), otherwise returns
the error.
If the transfer is already complete, returns immediately.
Example
use transfer_progress::SizedTransfer; use std::fs::File; use std::io::Read; let reader = File::open("file1.txt")?.take(1024); // Bytes let writer = File::create("file2.txt")?; let transfer = SizedTransfer::new(reader, writer, 1024); let (reader, writer) = transfer.finish()?;
Returns a fraction between 0.0 and 1.0 representing the state of the transfer.
Example
use transfer_progress::SizedTransfer; use std::fs::File; use std::io::Read; let reader = File::open("file1.txt")?.take(1024); // Bytes let writer = File::create("file2.txt")?; let transfer = SizedTransfer::new(reader, writer, 1024); while !transfer.is_complete() { println!("Transfer is {:.0}% complete", transfer.fraction_transferred() * 100.0); std::thread::sleep(std::time::Duration::from_secs(1)); }
Returns the approximate remaining time until this transfer completes. Returns None if
this cannot be calculated (I.E. no bytes have been transferred yet, so a speed cannot be
determined).
Example
use transfer_progress::SizedTransfer; use std::fs::File; use std::io::Read; let reader = File::open("file1.txt")?.take(1024); // Bytes let writer = File::create("file2.txt")?; let transfer = SizedTransfer::new(reader, writer, 1024); while !transfer.is_complete() { if let Some(eta) = transfer.eta() { println!("Transfer will complete in approximately {:?}", eta); } else { println!("Transfer completion time is unknown"); } std::thread::sleep(std::time::Duration::from_secs(1)); }
Methods from Deref<Target = Transfer<R, W>>
Tests if the transfer is complete
Example
use transfer_progress::Transfer; use std::fs::File; let reader = File::open("file1.txt")?; let writer = File::create("file2.txt")?; let transfer = Transfer::new(reader, writer); while !transfer.is_complete() { println!("Not complete yet"); std::thread::sleep(std::time::Duration::from_secs(1)); } println!("Complete!");
Returns the number of bytes transferred thus far between the reader and the writer.
Example
use transfer_progress::Transfer; use std::fs::File; let reader = File::open("file1.txt")?; let writer = File::create("file2.txt")?; let transfer = Transfer::new(reader, writer); while !transfer.is_complete() { println!("{} bytes transferred so far", transfer.transferred()); std::thread::sleep(std::time::Duration::from_secs(1)); } println!("Complete!");
Returns the elapsed time since the transfer started.
Example
use transfer_progress::Transfer; use std::fs::File; let reader = File::open("file1.txt")?; let writer = File::create("file2.txt")?; let transfer = Transfer::new(reader, writer); while !transfer.is_complete() {} println!("Transfer took {:?}", transfer.running_time());
Returns the average speed, in bytes per second, of the transfer.
Example
use transfer_progress::Transfer; use std::fs::File; let reader = File::open("file1.txt")?; let writer = File::create("file2.txt")?; let transfer = Transfer::new(reader, writer); while !transfer.is_complete() { println!("{}B/s", transfer.speed()); std::thread::sleep(std::time::Duration::from_secs(1)); }