ndn 0.0.1

[WIP] NDN - Named Data Networking in Rust
Documentation
use std::fmt;

use bytes::Bytes;
use tlv::Tlv;
use tlv::VarNumber;

use tlv::NameComponent as GenericNameComponent;
use tlv::ImplicitSha256DigestComponent;

#[derive(Debug, PartialEq)]
enum NameComponent {
    GenericNameComponent(GenericNameComponent),
    ImplicitSha256DigestComponent(ImplicitSha256DigestComponent),
}

#[derive(Debug, PartialEq)]
pub struct Name {
    components: Vec<NameComponent>,
    length: VarNumber,
}

impl Name {
    pub fn with_digest() -> Self {
        let digest = ImplicitSha256DigestComponent::new();
        let length = digest.length() + 1 + 1;
        let components = vec![NameComponent::ImplicitSha256DigestComponent(digest)];
        Self { components, length }
    }
}
impl Tlv for Name {
    const TYPE: u64 = 0x07;

    fn length(&self) -> VarNumber {
        self.length.clone()
    }

    fn value(&self) -> Option<Bytes> {
        unimplemented!()
    }

    fn size(&self) -> usize {
        unimplemented!()
    }
}

impl fmt::Display for Name {
    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
        write!(fmt, "{:?}", self.components)
    }
}