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));
}

Trait Implementations

Formats the value using the given formatter. Read more

The resulting type after dereferencing.

Dereferences the value.

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.