Enum vmem::AllocPolicy

source ·
pub enum AllocPolicy {
    InstantFit,
    BestFit,
    NextFit,
}
Expand description

An allocation policy.

Variants§

§

InstantFit

Allocate from the first block found that has a size greater than or equal to the requested size. This can cause fragmentation, but it is still generally the recommended policy, as it is O(1).

§

BestFit

Allocate the smallest block that can fit the requested size. This framgents less than InstantFit, but is O(n) in the worst case.

§

NextFit

Allocate from a block after the last-allocated block. This guarantees that allocations will not be reused, even after they are freed, until the arena wraps around again. This is beneficial for process IDs, for example, where re-allocating the same ID instantly could cause a spurious kill left over from the first process. Like InstantFit, this policy does not take wasted size into account. However, it is not quite O(1), because it needs to traverse list to find the next block. It will likely be close to O(1), but could be O(n) in the worst case.

Trait Implementations§

source§

impl Clone for AllocPolicy

source§

fn clone(&self) -> AllocPolicy

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl PartialEq for AllocPolicy

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for AllocPolicy

source§

impl Eq for AllocPolicy

source§

impl StructuralEq for AllocPolicy

source§

impl StructuralPartialEq for AllocPolicy

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> 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> ToOwned for T
where T: Clone,

§

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>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.