Skip to content

Commit 5275973

Browse files
committed
Move read_u64 to multihash.rs
1 parent 2f047fc commit 5275973

File tree

2 files changed

+21
-24
lines changed

2 files changed

+21
-24
lines changed

src/lib.rs

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -94,25 +94,3 @@ pub use crate::hasher_impl::sha3::{Sha3Digest, Sha3_224, Sha3_256, Sha3_384, Sha
9494
pub use crate::hasher_impl::strobe::{Strobe256, Strobe512, StrobeDigest, StrobeHasher};
9595
pub use crate::hasher_impl::unknown::UnknownDigest;
9696

97-
#[cfg(feature = "std")]
98-
use std::io;
99-
#[cfg(not(feature = "std"))]
100-
use core2::io;
101-
102-
use unsigned_varint::{encode, decode};
103-
104-
/// Reader function from unsigned_varint
105-
pub fn varint_read_u64<R: io::Read>(mut r: R) -> Result<u64> {
106-
let mut b = encode::u64_buffer();
107-
for i in 0..b.len() {
108-
let n = r.read(&mut (b[i..i + 1]))?;
109-
if n == 0 {
110-
return Err(error::Error::Varint(decode::Error::Insufficient));
111-
}
112-
else if decode::is_last(b[i]) {
113-
return Ok(decode::u64(&b[..=i]).unwrap().0);
114-
}
115-
}
116-
Err(error::Error::Varint(decode::Error::Overflow))
117-
}
118-

src/multihash.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ use core::convert::TryInto;
88
use core::fmt::Debug;
99
use generic_array::{ArrayLength, GenericArray};
1010

11+
use unsigned_varint::{encode as varint_encode, decode};
12+
1113
#[cfg(feature = "std")]
1214
use std::io;
1315

@@ -259,7 +261,6 @@ pub fn write_multihash<W>(mut w: W, code: u64, size: u8, digest: &[u8]) -> Resul
259261
where
260262
W: io::Write,
261263
{
262-
use unsigned_varint::encode as varint_encode;
263264

264265
let mut code_buf = varint_encode::u64_buffer();
265266
let code = varint_encode::u64(code, &mut code_buf);
@@ -285,7 +286,7 @@ where
285286
S: Size,
286287
{
287288
#[cfg(not(feature = "std"))]
288-
use crate::varint_read_u64 as read_u64;
289+
use crate::read_u64 as read_u64;
289290

290291
#[cfg(feature = "std")]
291292
use unsigned_varint::io::read_u64;
@@ -308,6 +309,24 @@ where
308309
Ok((code, size as u8, digest))
309310
}
310311

312+
/// Reads 64 bits from a byte array into a u64
313+
/// Adapted from unsigned-varint's generated read_u64 function at
314+
/// https://github.com/paritytech/unsigned-varint/blob/master/src/io.rs
315+
pub fn read_u64<R: io::Read>(mut r: R) -> Result<u64, Error> {
316+
let mut b = varint_encode::u64_buffer();
317+
for i in 0..b.len() {
318+
let n = r.read(&mut (b[i..i + 1]))?;
319+
if n == 0 {
320+
return Err(Error::Varint(decode::Error::Insufficient));
321+
}
322+
else if decode::is_last(b[i]) {
323+
return Ok(decode::u64(&b[..=i]).unwrap().0);
324+
}
325+
}
326+
Err(Error::Varint(decode::Error::Overflow))
327+
}
328+
329+
311330
#[cfg(test)]
312331
mod tests {
313332
use super::*;

0 commit comments

Comments
 (0)