use std::{
collections::HashMap,
io::{Seek, Write},
};
use super::name::Label;
pub(crate) trait PacketPart<'a> {
fn parse(data: &'a [u8], position: &mut usize) -> crate::Result<Self>
where
Self: Sized;
fn write_to<T: Write>(&self, out: &mut T) -> crate::Result<()>;
fn write_compressed_to<T: Write + Seek>(
&'a self,
out: &mut T,
_name_refs: &mut HashMap<&'a [Label<'a>], usize>,
) -> crate::Result<()> {
self.write_to(out)
}
fn len(&self) -> usize;
}