@@ -107,7 +107,7 @@ impl<const S: usize> Multihash<S> {
107
107
/// Wraps the digest in a multihash.
108
108
pub const fn wrap ( code : u64 , input_digest : & [ u8 ] ) -> Result < Self , Error > {
109
109
if input_digest. len ( ) > S {
110
- return Err ( Error :: InvalidSize ( input_digest. len ( ) as _ ) ) ;
110
+ return Err ( Error :: invalid_size ( input_digest. len ( ) as _ ) ) ;
111
111
}
112
112
let size = input_digest. len ( ) ;
113
113
let mut digest = [ 0 ; S ] ;
@@ -158,7 +158,7 @@ impl<const S: usize> Multihash<S> {
158
158
let result = Self :: read ( & mut bytes) ?;
159
159
// There were more bytes supplied than read
160
160
if !bytes. is_empty ( ) {
161
- return Err ( Error :: InvalidSize ( bytes. len ( ) . try_into ( ) . expect (
161
+ return Err ( Error :: invalid_size ( bytes. len ( ) . try_into ( ) . expect (
162
162
"Currently the maximum size is 255, therefore always fits into usize" ,
163
163
) ) ) ;
164
164
}
@@ -221,7 +221,7 @@ impl<const S: usize> Multihash<S> {
221
221
pub fn resize < const R : usize > ( & self ) -> Result < Multihash < R > , Error > {
222
222
let size = self . size as usize ;
223
223
if size > R {
224
- return Err ( Error :: InvalidSize ( self . size as u64 ) ) ;
224
+ return Err ( Error :: invalid_size ( self . size as u64 ) ) ;
225
225
}
226
226
let mut mh = Multihash {
227
227
code : self . code ,
@@ -328,9 +328,12 @@ where
328
328
329
329
let written = code. len ( ) + size. len ( ) + digest. len ( ) ;
330
330
331
- w. write_all ( code) ?;
332
- w. write_all ( size) ?;
333
- w. write_all ( digest) ?;
331
+ w. write_all ( code)
332
+ . map_err ( crate :: error:: io_to_multihash_error) ?;
333
+ w. write_all ( size)
334
+ . map_err ( crate :: error:: io_to_multihash_error) ?;
335
+ w. write_all ( digest)
336
+ . map_err ( crate :: error:: io_to_multihash_error) ?;
334
337
335
338
Ok ( written)
336
339
}
@@ -349,16 +352,19 @@ where
349
352
let size = read_u64 ( & mut r) ?;
350
353
351
354
if size > S as u64 || size > u8:: MAX as u64 {
352
- return Err ( Error :: InvalidSize ( size) ) ;
355
+ return Err ( Error :: invalid_size ( size) ) ;
353
356
}
354
357
355
358
let mut digest = [ 0 ; S ] ;
356
- r. read_exact ( & mut digest[ ..size as usize ] ) ?;
359
+ r. read_exact ( & mut digest[ ..size as usize ] )
360
+ . map_err ( crate :: error:: io_to_multihash_error) ?;
357
361
Ok ( ( code, size as u8 , digest) )
358
362
}
359
363
360
364
#[ cfg( feature = "std" ) ]
361
- pub ( crate ) use unsigned_varint:: io:: read_u64;
365
+ pub ( crate ) fn read_u64 < R : io:: Read > ( r : R ) -> Result < u64 , Error > {
366
+ unsigned_varint:: io:: read_u64 ( r) . map_err ( crate :: error:: unsigned_variant_to_multihash_error)
367
+ }
362
368
363
369
/// Reads 64 bits from a byte array into a u64
364
370
/// Adapted from unsigned-varint's generated read_u64 function at
@@ -368,14 +374,16 @@ pub(crate) fn read_u64<R: io::Read>(mut r: R) -> Result<u64, Error> {
368
374
use unsigned_varint:: decode;
369
375
let mut b = varint_encode:: u64_buffer ( ) ;
370
376
for i in 0 ..b. len ( ) {
371
- let n = r. read ( & mut ( b[ i..i + 1 ] ) ) ?;
377
+ let n = r
378
+ . read ( & mut ( b[ i..i + 1 ] ) )
379
+ . map_err ( crate :: error:: io_to_multihash_error) ?;
372
380
if n == 0 {
373
- return Err ( Error :: Varint ( decode :: Error :: Insufficient ) ) ;
381
+ return Err ( Error :: insufficient_varint_bytes ( ) ) ;
374
382
} else if decode:: is_last ( b[ i] ) {
375
383
return Ok ( decode:: u64 ( & b[ ..=i] ) . unwrap ( ) . 0 ) ;
376
384
}
377
385
}
378
- Err ( Error :: Varint ( decode :: Error :: Overflow ) )
386
+ Err ( Error :: varint_overflow ( ) )
379
387
}
380
388
381
389
#[ cfg( test) ]
0 commit comments