summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-04-23 11:28:17 +0300
committerLars Wirzenius <liw@liw.fi>2021-04-23 11:28:17 +0300
commit285ddea024ab3204f2032adfa3bb61f7ee238418 (patch)
tree1900b53feee7e098812c867d973f184e3064658b
parent1f5d9aed39495980736f25bbd7ec01d5193494c0 (diff)
downloadsummain-rs-285ddea024ab3204f2032adfa3bb61f7ee238418.tar.gz
spwan blocking task only for checksum update
-rw-r--r--src/lib.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 8dab917..698cf31 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -91,20 +91,21 @@ async fn file_checksum(path: PathBuf) -> std::io::Result<String> {
let file = File::open(path)?;
let mut reader = BufReader::new(file);
- let mut buf = vec![0; BUF_SIZE];
loop {
+ let mut buf = vec![0; BUF_SIZE];
let n = reader.read(&mut buf)?;
if n == 0 {
break;
}
- update_checksum(&mut hasher, &buf[..n]);
+ hasher = tokio::task::spawn_blocking(move || update_checksum(hasher, &buf[..n])).await?;
}
let hash = hasher.finalize();
Ok(format!("{:x}", hash))
}
-fn update_checksum(hasher: &mut Sha256, data: &[u8]) {
+fn update_checksum(mut hasher: Sha256, data: &[u8]) -> Sha256 {
hasher.update(data);
+ hasher
}
mod mode {