Function bao::decode::hash_from_outboard_encoded_nostd
source · pub fn hash_from_outboard_encoded_nostd<F1, F2, E>(
content_read_exact_fn: F1,
outboard_read_exact_fn: F2
) -> Result<Hash, E>where
F1: FnOnce(&mut [u8]) -> Result<(), E>,
F2: FnMut(&mut [u8]) -> Result<(), E>,
Expand description
Given an outboard encoding, quickly determine the root hash by reading just the root node.
Depending on the content length, the outboard_read_exact_fn
callback will be called one or
two times, and the content_read_exact_fn
will be called either one time or not at all.
Example
let input = b"foobar";
let (hash1, outboard) = bao::encode::encode_outboard_to_vec(input);
let mut content_reader = &input[..];
let mut outboard_reader = &*outboard;
let hash2 = bao::decode::hash_from_outboard_encoded_nostd(
|buf| {
let take = buf.len();
buf.copy_from_slice(&content_reader[..take]);
content_reader = &content_reader[take..];
Ok::<(), ()>(())
},
|buf| {
let take = buf.len();
buf.copy_from_slice(&outboard_reader[..take]);
outboard_reader = &outboard_reader[take..];
Ok::<(), ()>(())
},
).unwrap();
assert_eq!(hash1, hash2);