rust-dnsbox/lib/dnsbox-base/src/ser/packet/mod.rs

22 lines
405 B
Rust

use bytes::{Bytes, Buf};
use errors::*;
use std::io::Cursor;
mod std_impls;
pub trait DnsPacketData: Sized {
fn deserialize(data: &mut Cursor<Bytes>) -> Result<Self>;
}
pub fn deserialize<T>(data: Bytes) -> Result<T>
where
T: DnsPacketData
{
let mut c = Cursor::new(data);
let result = T::deserialize(&mut c)?;
if c.remaining() != 0 {
bail!("data remaining: {}", c.remaining())
}
Ok(result)
}