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

Version Path
wasmtime-20.0.2 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-20.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-18.0.3 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-17.0.1 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-17.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-16.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-15.0.1 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-15.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-14.0.4 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-14.0.3 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-14.0.1 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-14.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-13.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-12.0.1 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-12.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-11.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-10.0.1 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-10.0.0 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-9.0.4 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs
wasmtime-9.0.1 ./ext/cargo-vendor/bincode-1.3.3/src/config/limit.rs