@@ -2,9 +2,10 @@ use std::env;
22use std:: fs;
33use std:: io;
44use std:: io:: { Read , Seek } ;
5+ use std:: num:: NonZeroUsize ;
56use std:: path:: { Path , PathBuf } ;
67
7- use anyhow:: { bail , Result } ;
8+ use anyhow:: Result ;
89use flate2:: read:: GzDecoder ;
910use log:: error;
1011use sha1_smol:: { Digest , Sha1 } ;
@@ -159,22 +160,18 @@ pub fn get_sha1_checksum<R: Read>(rdr: R) -> Result<Digest> {
159160
160161/// Returns the SHA1 hash for the entire input, as well as each chunk of it. The
161162/// `chunk_size` must be non-zero.
162- pub fn get_sha1_checksums ( data : & [ u8 ] , chunk_size : usize ) -> Result < ( Digest , Vec < Digest > ) > {
163- if chunk_size == 0 {
164- bail ! ( "Chunk size may not be zero." ) ;
165- }
166-
163+ pub fn get_sha1_checksums ( data : & [ u8 ] , chunk_size : NonZeroUsize ) -> ( Digest , Vec < Digest > ) {
167164 let mut total_sha = Sha1 :: new ( ) ;
168165 let mut chunks = Vec :: new ( ) ;
169166
170- for chunk in data. chunks ( chunk_size) {
167+ for chunk in data. chunks ( chunk_size. into ( ) ) {
171168 let mut chunk_sha = Sha1 :: new ( ) ;
172169 chunk_sha. update ( chunk) ;
173170 total_sha. update ( chunk) ;
174171 chunks. push ( chunk_sha. digest ( ) ) ;
175172 }
176173
177- Ok ( ( total_sha. digest ( ) , chunks) )
174+ ( total_sha. digest ( ) , chunks)
178175}
179176
180177/// Checks if provided slice contains gzipped data.
@@ -245,9 +242,10 @@ mod tests {
245242
246243 #[ test]
247244 fn sha1_checksums_power_of_two ( ) {
245+ const NONZERO_16 : NonZeroUsize = NonZeroUsize :: new ( 16 ) . unwrap ( ) ;
246+
248247 let data = b"this is some binary data for the test" ;
249- let ( total_sha, chunks) =
250- get_sha1_checksums ( data, 16 ) . expect ( "Method should not fail because 16 is not zero" ) ;
248+ let ( total_sha, chunks) = get_sha1_checksums ( data, NONZERO_16 ) ;
251249
252250 assert_eq ! (
253251 total_sha. to_string( ) ,
@@ -268,10 +266,11 @@ mod tests {
268266
269267 #[ test]
270268 fn sha1_checksums_not_power_of_two ( ) {
269+ const NONZERO_17 : NonZeroUsize = NonZeroUsize :: new ( 17 ) . unwrap ( ) ;
270+
271271 let data = b"this is some binary data for the test" ;
272272
273- let ( total_sha, chunks) =
274- get_sha1_checksums ( data, 17 ) . expect ( "Method should not fail because 17 is not zero" ) ;
273+ let ( total_sha, chunks) = get_sha1_checksums ( data, NONZERO_17 ) ;
275274
276275 assert_eq ! (
277276 total_sha. to_string( ) ,
@@ -289,10 +288,4 @@ mod tests {
289288 ]
290289 ) ;
291290 }
292-
293- #[ test]
294- fn sha1_checksums_zero ( ) {
295- let data = b"this is some binary data for the test" ;
296- get_sha1_checksums ( data, 0 ) . expect_err ( "Method should fail because 0 is zero" ) ;
297- }
298291}
0 commit comments