#[doc(hidden)]
pub mod private {
pub trait Sealed {}
}
pub trait AllocPolicy: private::Sealed + Send + Sync + 'static {
const ENABLE_POISONING: bool;
const ZERO_INITIALIZE: bool;
const POISON_FREE_BYTE: u8 = 0xDE;
const POISON_ALLOC_BYTE: u8 = 0xAD;
const ENABLE_FREE_LIST_ENCRYPTION: bool = false;
const RANDOMIZE_ALLOCATION: bool = false;
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct StandardPolicy;
impl private::Sealed for StandardPolicy {}
impl AllocPolicy for StandardPolicy {
const ENABLE_POISONING: bool = false;
const ZERO_INITIALIZE: bool = false;
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SecurePolicy;
impl private::Sealed for SecurePolicy {}
impl AllocPolicy for SecurePolicy {
const ENABLE_POISONING: bool = true;
const ZERO_INITIALIZE: bool = true;
const RANDOMIZE_ALLOCATION: bool = true;
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HardenedPolicy;
impl private::Sealed for HardenedPolicy {}
impl AllocPolicy for HardenedPolicy {
const ENABLE_POISONING: bool = true;
const ZERO_INITIALIZE: bool = true;
const ENABLE_FREE_LIST_ENCRYPTION: bool = true;
const RANDOMIZE_ALLOCATION: bool = true;
}