use crate::merkle::{Family, Position};
use alloc::sync::Arc;
use commonware_cryptography::Digest;
pub trait Readable: Send + Sync {
type Family: Family;
type Digest: Digest;
fn size(&self) -> Position<Self::Family>;
fn get_node(&self, pos: Position<Self::Family>) -> Option<Self::Digest>;
}
impl<T: Readable> Readable for Arc<T> {
type Family = T::Family;
type Digest = T::Digest;
fn size(&self) -> Position<Self::Family> {
(**self).size()
}
fn get_node(&self, pos: Position<Self::Family>) -> Option<Self::Digest> {
(**self).get_node(pos)
}
}