use crate::Name;
pub(crate) struct DataAddressRef<'a> {
pub(crate) index_level: u32,
pub(crate) digest: DigestRef<'a>,
}
#[derive(Clone)]
pub(crate) struct DataAddress {
pub(crate) index_level: u32,
pub(crate) digest: Digest,
}
impl DataAddress {
pub(crate) fn as_ref(&self) -> DataAddressRef<'_> {
DataAddressRef {
index_level: self.index_level,
digest: self.digest.as_digest_ref(),
}
}
}
impl From<Name> for DataAddress {
fn from(name: Name) -> Self {
DataAddress {
index_level: name.index_level,
digest: Digest(name.digest),
}
}
}
#[derive(Clone)]
pub(crate) struct Digest(pub(crate) Vec<u8>);
impl Digest {
pub(crate) fn as_digest_ref(&self) -> DigestRef<'_> {
DigestRef(self.0.as_slice())
}
}
#[derive(Copy, Clone)]
pub(crate) struct DigestRef<'a>(pub(crate) &'a [u8]);