diff --git a/Cargo.lock b/Cargo.lock index 7546f83546ebb163a4978d4dff31ec9e96e8ef0f..8771f6eb8a777f544ae91ad10eaa5f4eb60b60ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -212,16 +212,15 @@ dependencies = [ [[package]] name = "blake3" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec 0.7.4", "cc", "cfg-if 1.0.0", "constant_time_eq 0.3.0", - "digest 0.10.7", ] [[package]] @@ -1237,7 +1236,7 @@ dependencies = [ name = "redox_cookbook" version = "0.1.0" dependencies = [ - "blake3 1.4.1", + "blake3 1.5.0", "pbr", "pkgar", "pkgar-keys", diff --git a/Cargo.toml b/Cargo.toml index 1a6ebecc469f726435eba9a95ddedaa6d8cebeac..3d33a986ccc096b4fd576e9ee67697a24f3fe487 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ name = "cookbook" path = "src/lib.rs" [dependencies] -blake3 = "1" +blake3 = "1.5" pbr = "1.0.2" pkgar = "0.1.7" pkgar-keys = "0.1.0" diff --git a/src/blake3.rs b/src/blake3.rs index acc037d35b465665ae61be428813302a9f7021b0..746b829d1de8f728cdd29c3d02d1ef2b14ab4800 100644 --- a/src/blake3.rs +++ b/src/blake3.rs @@ -1,30 +1,8 @@ use blake3::Hasher; -use std::{ - fs, - io::{Read, Result}, - path::Path, - time::Duration, -}; +use std::{fs, io::Result, path::Path, time::Duration}; use crate::progress_bar::{ProgressBar, ProgressBarRead}; -pub fn blake3<R: Read>(r: &mut R) -> Result<String> { - let mut hasher = Hasher::new(); - - let mut data = vec![0; 4 * 1024 * 1024]; - loop { - let count = r.read(&mut data)?; - if count == 0 { - break; - } - - hasher.update(&data[..count]); - } - - let hash = hasher.finalize(); - Ok(format!("{}", hash.to_hex())) -} - pub fn blake3_progress<P: AsRef<Path>>(path: P) -> Result<String> { let len = fs::metadata(&path)?.len(); @@ -35,12 +13,11 @@ pub fn blake3_progress<P: AsRef<Path>>(path: P) -> Result<String> { pb.set_max_refresh_rate(Some(Duration::new(1, 0))); pb.set_units(pbr::Units::Bytes); - let res = { - let mut pbr = ProgressBarRead::new(&mut pb, &mut f); - blake3(&mut pbr) - }; + let mut pbr = ProgressBarRead::new(&mut pb, &mut f); + let hash = Hasher::new().update_reader(&mut pbr)?.finalize(); + let res = format!("{}", hash.to_hex()); pb.finish_println(""); - res + Ok(res) }