Skip to main content

DecompressionBudget

Struct DecompressionBudget 

Source
pub struct DecompressionBudget(/* private fields */);
Expand description

Upper bound on the bytes verify decodes to check payload integrity.

The budget bounds the work done beyond what listing already does: ZIP entries and 7z blocks are charged their declared uncompressed size before they are decoded, and for compressed TAR it bounds the read from the end marker to decoder EOF. TAR entry content is never charged because listing decodes it anyway. The default is a fixed 500 MiB, equal to the default max_total_size; it does not follow a raised max_total_size.

§Examples

use exarch_core::DecompressionBudget;

assert!(DecompressionBudget::try_from_bytes(0).is_err());
let budget = DecompressionBudget::try_from_bytes(1024)?;
assert_eq!(budget.get(), 1024);
assert_eq!(DecompressionBudget::default(), DecompressionBudget::DEFAULT);

Implementations§

Source§

impl DecompressionBudget

Source

pub const DEFAULT: Self

The default budget: 500 MiB.

Source

pub const fn new(bytes: NonZeroU64) -> Self

Creates a budget from a non-zero byte count.

Source

pub fn try_from_bytes(bytes: u64) -> Result<Self>

Creates a budget from a byte count.

§Errors

Returns ArchiveError::InvalidConfiguration when bytes is zero.

Source

pub const fn get(self) -> u64

Returns the budget in bytes.

Trait Implementations§

Source§

impl Clone for DecompressionBudget

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for DecompressionBudget

Source§

impl Debug for DecompressionBudget

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DecompressionBudget

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for DecompressionBudget

Source§

impl Hash for DecompressionBudget

Source§

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

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for DecompressionBudget

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for DecompressionBudget

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.