#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub enum SetMemoryPolicyStrictness
{
JustSetPolicy,
SetPolicyAndMovePagesIfPossible,
SetPolicyAndMovePagesOrFail,
}
impl Default for SetMemoryPolicyStrictness
{
#[inline(always)]
fn default() -> Self
{
SetMemoryPolicyStrictness::SetPolicyAndMovePagesIfPossible
}
}
impl SetMemoryPolicyStrictness
{
#[inline(always)]
pub fn set_memory_address_policy(&self, set_memory_policy: &SetMemoryPolicy, address: NonNull<u8>, length: usize) -> Result<(), ()>
{
use self::SetMemoryPolicyStrictness::*;
match self
{
&JustSetPolicy => set_memory_policy.set_address_policy(address, length),
&SetPolicyAndMovePagesIfPossible => set_memory_policy.set_address_policy_and_move_pages_if_possible(address, length),
&SetPolicyAndMovePagesOrFail => set_memory_policy.set_address_policy_and_move_pages(address, length)?,
}
Ok(())
}
}