xxh 0.1.2

XXHash algorithm implementation for Rust
Documentation
use std::env;
use std::fs::File;
use std::io::{BufRead, BufReader};
use std::time::SystemTime;

const CAP: usize = 64 * 1024;

fn main() {
    let start_time = SystemTime::now();
    let args: Vec<String> = env::args().collect();

    let filename = &args[1];
    let file = File::open(filename).expect("Invalid file path");

    let mut reader = BufReader::with_capacity(CAP, file);
    let mut digest = xxh::Xxh64::default();
    loop {
        let length = {
            let data = reader.fill_buf();
            match data {
                Err(_) => break,
                Ok(data) => {
                    digest.write(data);
                    data.len()
                }
            }
        };
        if length == 0 {
            break;
        }
        reader.consume(length)
    }
    let result = digest.finish();
    println!(
        "Finished `{}` in {}s\r\n\
    DEC: {}\r\n\
    HEX: {:x}",
        filename,
        SystemTime::now()
            .duration_since(start_time)
            .expect("Invalid system time")
            .as_secs_f32(),
        result,
        result
    );
}