mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-21 05:44:44 +00:00
Add tree_hash_derive crate
This commit is contained in:
@@ -12,7 +12,7 @@ pub struct BTreeOverlay {
|
||||
impl BTreeOverlay {
|
||||
pub fn new<T>(item: &T, initial_offset: usize) -> Result<Self, Error>
|
||||
where
|
||||
T: CachedTreeHashSubtree<T>,
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
{
|
||||
item.btree_overlay(initial_offset)
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ impl Into<Vec<u8>> for TreeHashCache {
|
||||
impl TreeHashCache {
|
||||
pub fn new<T>(item: &T) -> Result<Self, Error>
|
||||
where
|
||||
T: CachedTreeHashSubtree<T>,
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
{
|
||||
item.new_cache()
|
||||
}
|
||||
@@ -32,7 +32,7 @@ impl TreeHashCache {
|
||||
leaves_and_subtrees: Vec<Self>,
|
||||
) -> Result<Self, Error>
|
||||
where
|
||||
T: CachedTreeHashSubtree<T>,
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
{
|
||||
let offset_handler = BTreeOverlay::new(item, 0)?;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use ssz::ssz_encode;
|
||||
|
||||
mod vec;
|
||||
|
||||
impl CachedTreeHashSubtree<u64> for u64 {
|
||||
impl CachedTreeHashSubTree<u64> for u64 {
|
||||
fn item_type() -> ItemType {
|
||||
ItemType::Basic
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use super::*;
|
||||
|
||||
impl<T> CachedTreeHashSubtree<Vec<T>> for Vec<T>
|
||||
impl<T> CachedTreeHashSubTree<Vec<T>> for Vec<T>
|
||||
where
|
||||
T: CachedTreeHashSubtree<T>,
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
{
|
||||
fn item_type() -> ItemType {
|
||||
ItemType::List
|
||||
@@ -168,7 +168,7 @@ where
|
||||
|
||||
fn get_packed_leaves<T>(vec: &Vec<T>) -> Result<Vec<u8>, Error>
|
||||
where
|
||||
T: CachedTreeHashSubtree<T>,
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
{
|
||||
let num_packed_bytes = (BYTES_PER_CHUNK / T::packing_factor()) * vec.len();
|
||||
let num_leaves = num_sanitized_leaves(num_packed_bytes);
|
||||
|
||||
@@ -35,7 +35,7 @@ pub enum ItemType {
|
||||
Composite,
|
||||
}
|
||||
|
||||
pub trait CachedTreeHash<T>: CachedTreeHashSubtree<T> + Sized {
|
||||
pub trait CachedTreeHash<T>: CachedTreeHashSubTree<T> + Sized {
|
||||
fn update_internal_tree_hash_cache(self, old: T) -> Result<(Self, Self), Error>;
|
||||
|
||||
fn cached_tree_hash_root(&self) -> Option<Vec<u8>>;
|
||||
@@ -43,7 +43,7 @@ pub trait CachedTreeHash<T>: CachedTreeHashSubtree<T> + Sized {
|
||||
fn clone_without_tree_hash_cache(&self) -> Self;
|
||||
}
|
||||
|
||||
pub trait CachedTreeHashSubtree<Item> {
|
||||
pub trait CachedTreeHashSubTree<Item> {
|
||||
fn item_type() -> ItemType;
|
||||
|
||||
fn btree_overlay(&self, chunk_offset: usize) -> Result<BTreeOverlay, Error>;
|
||||
|
||||
Reference in New Issue
Block a user