digest 0.5.1

Digest trait for cryptographic hash functions
Documentation
use std::io;
use super::Input;

const BUFFER_SIZE: usize = 1024;

pub trait DigestReader {
    fn read_from(&mut self, source: &mut io::Read) -> io::Result<()>;
}

impl<T: Input> DigestReader for T {
    fn read_from(&mut self, source: &mut io::Read) -> io::Result<()> {
        let mut buffer = [0u8; BUFFER_SIZE];
        loop {
            let bytes_read = source.read(&mut buffer)?;
            self.digest(&buffer[..bytes_read]);
            if bytes_read != buffer.len() {
                break;
            }
        }
        Ok(())
    }
}