Sha256: e5883d901a4b216e622f092503767ace121c396b645a24e28dcc528eab54d8e3
Contents?: true
Size: 1.29 KB
Versions: 27
Compression:
Stored size: 1.29 KB
Contents
use error::{ErrorKind, Result}; /// A trait for stopping serialization and deserialization when a certain limit has been reached. pub trait SizeLimit { /// Tells the SizeLimit that a certain number of bytes has been /// read or written. Returns Err if the limit has been exceeded. fn add(&mut self, n: u64) -> Result<()>; /// Returns the hard limit (if one exists) fn limit(&self) -> Option<u64>; } /// A SizeLimit that restricts serialized or deserialized messages from /// exceeding a certain byte length. #[derive(Copy, Clone)] pub struct Bounded(pub u64); /// A SizeLimit without a limit! /// Use this if you don't care about the size of encoded or decoded messages. #[derive(Copy, Clone)] pub struct Infinite; impl SizeLimit for Bounded { #[inline(always)] fn add(&mut self, n: u64) -> Result<()> { if self.0 >= n { self.0 -= n; Ok(()) } else { Err(Box::new(ErrorKind::SizeLimit)) } } #[inline(always)] fn limit(&self) -> Option<u64> { Some(self.0) } } impl SizeLimit for Infinite { #[inline(always)] fn add(&mut self, _: u64) -> Result<()> { Ok(()) } #[inline(always)] fn limit(&self) -> Option<u64> { None } }
Version data entries
27 entries across 27 versions & 1 rubygems