Source code

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(),↩
)))↩
}↩
}↩
}↩