Struct vm_allocator::Constraint
source · [−]pub struct Constraint { /* private fields */ }
Expand description
A resource allocation constraint.
Example
use vm_allocator::{AllocPolicy, Constraint, Error, IdAllocator, DEFAULT_CONSTRAINT_ALIGN};
let constraint =
Constraint::new(0x4, DEFAULT_CONSTRAINT_ALIGN, AllocPolicy::FirstMatch).unwrap();
assert_eq!(constraint.size(), 0x4);
assert_eq!(constraint.align(), 0x4);
// Alignments need to be a power of 2, otherwise an error is returned.
assert_eq!(
Constraint::new(0x4, 0x3, AllocPolicy::LastMatch).unwrap_err(),
Error::InvalidAlignment
);
// When using the ExactMatch policy, the start address must also be aligned, otherwise
// an error is returned.
assert_eq!(
Constraint::new(0x4, 0x4, AllocPolicy::ExactMatch(0x3)).unwrap_err(),
Error::UnalignedAddress
);
Implementations
sourceimpl Constraint
impl Constraint
sourcepub fn new(size: u64, align: u64, policy: AllocPolicy) -> Result<Self>
pub fn new(size: u64, align: u64, policy: AllocPolicy) -> Result<Self>
Creates a new constraint based on the passed configuration.
When the ExactMatch
policy is used, the start address MUST be aligned to the
alignment passed as a parameter.
Arguments:
size
: size to allocate.align
: alignment to be used for the allocated resources. Valid alignments are a power of 2.policy
: allocation policy.
Trait Implementations
sourceimpl Clone for Constraint
impl Clone for Constraint
sourcefn clone(&self) -> Constraint
fn clone(&self) -> Constraint
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for Constraint
impl Debug for Constraint
sourceimpl PartialEq<Constraint> for Constraint
impl PartialEq<Constraint> for Constraint
sourcefn eq(&self, other: &Constraint) -> bool
fn eq(&self, other: &Constraint) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &Constraint) -> bool
fn ne(&self, other: &Constraint) -> bool
This method tests for !=
.
impl Copy for Constraint
impl StructuralPartialEq for Constraint
Auto Trait Implementations
impl RefUnwindSafe for Constraint
impl Send for Constraint
impl Sync for Constraint
impl Unpin for Constraint
impl UnwindSafe for Constraint
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
🔬 This is a nightly-only experimental API. (
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more