Enum wire::SizeLimit [] [src]

pub enum SizeLimit {
    Infinite,
    Bounded(u64),
}

A limit on the amount of bytes that can be read or written.

Size limits are an incredibly important part of both encoding and decoding.

In order to prevent DOS attacks on a decoder, it is important to limit the amount of bytes that a single encoded message can be; otherwise, if you are decoding bytes right off of a TCP stream for example, it would be possible for an attacker to flood your server with a 3TB vec, causing the decoder to run out of memory and crash your application! Because of this, you can provide a maximum-number-of-bytes that can be read during decoding, and the decoder will explicitly fail if it has to read any more than that.

On the other side, you want to make sure that you aren't encoding a message that is larger than your decoder expects. By supplying a size limit to an encoding function, the encoder will verify that the structure can be encoded within that limit. This verification occurs before any bytes are written to the Writer, so recovering from an the error is easy.

Variants

Infinite
Bounded

Trait Implementations

Derived Implementations

impl PartialOrd<SizeLimit> for SizeLimit

fn partial_cmp(&self, __arg_0: &SizeLimit) -> Option<Ordering>

fn lt(&self, __arg_0: &SizeLimit) -> bool

fn le(&self, __arg_0: &SizeLimit) -> bool

fn gt(&self, __arg_0: &SizeLimit) -> bool

fn ge(&self, __arg_0: &SizeLimit) -> bool

impl Ord for SizeLimit

fn cmp(&self, __arg_0: &SizeLimit) -> Ordering

impl PartialEq<SizeLimit> for SizeLimit

fn eq(&self, __arg_0: &SizeLimit) -> bool

fn ne(&self, __arg_0: &SizeLimit) -> bool

impl Eq for SizeLimit

impl Hash for SizeLimit

fn hash<__H>(&self, __arg_0: &mut __H) where __H: Hasher

impl Debug for SizeLimit

fn fmt(&self, __arg_0: &mut Formatter) -> Result<(), Error>

impl Copy for SizeLimit

impl Clone for SizeLimit

fn clone(&self) -> SizeLimit

fn clone_from(&mut self, source: &Self)