blockstore: Implement get_range() to retrieve a range iterator.

This commit is contained in:
parazyd
2022-04-03 16:08:29 +02:00
parent 1439d921da
commit 8864a4c564

View File

@@ -112,4 +112,23 @@ impl BlockStore {
Ok(None)
}
/// Retrieve an iterator over a range of blockhashes.
/// Usage:
/// ```
/// let mut r = get_range(foo, bar);
/// while let Some((k, v)) = r.next() {
/// let hash_bytes: [u8; 32] = k.as_ref().try_into().unwrap();
/// let block = deserialize(&v)?;
/// }
/// ```
/// When iterating, take care of potential memory limitations if you're
/// storing results in memory. For blockchain sync, it should probably
/// be done in chunks.
pub fn get_range(&self, start: blake3::Hash, end: blake3::Hash) -> sled::Iter {
let start: &[u8] = start.as_bytes().as_ref();
let end: &[u8] = end.as_bytes().as_ref();
self.0.range(start..end)
}
}