Revision control
Copy as Markdown
Other Tools
use de::read::SliceReader;↩
use {ErrorKind, Result};↩
↩
/// A trait for erroring deserialization if not all bytes were read.↩
pub trait TrailingBytes {↩
/// Checks a given slice reader to determine if deserialization used all bytes in the slice.↩
fn check_end(reader: &SliceReader) -> Result<()>;↩
}↩
↩
/// A TrailingBytes config that will allow trailing bytes in slices after deserialization.↩
#[derive(Copy, Clone)]↩
pub struct AllowTrailing;↩
↩
/// A TrailingBytes config that will cause bincode to produce an error if bytes are left over in the slice when deserialization is complete.↩
↩
#[derive(Copy, Clone)]↩
pub struct RejectTrailing;↩
↩
impl TrailingBytes for AllowTrailing {↩
#[inline(always)]↩
fn check_end(_reader: &SliceReader) -> Result<()> {↩
Ok(())↩
}↩
}↩
↩
impl TrailingBytes for RejectTrailing {↩
#[inline(always)]↩
fn check_end(reader: &SliceReader) -> Result<()> {↩
if reader.is_finished() {↩
Ok(())↩
} else {↩
Err(Box::new(ErrorKind::Custom(↩
"Slice had bytes remaining after deserialization".to_string(),↩
)))↩
}↩
}↩
}↩