pub struct MemoryBudget { /* private fields */ }Expand description
A validated upper bound for memory retained by one execution context.
Implementations§
Source§impl MemoryBudget
impl MemoryBudget
Sourcepub const fn new(bytes: usize) -> Result<Self, MemoryBudgetError>
pub const fn new(bytes: usize) -> Result<Self, MemoryBudgetError>
Creates a non-zero budget.
There is no compile-time maximum. A ceiling written into a library is a ceiling nobody can raise, and a caller reading a hundred-gigabyte entry needs a working set no constant here could have anticipated.
§Errors
Returns MemoryBudgetError::Zero when bytes is zero, because a
zero-byte budget cannot make forward progress.
Sourcepub fn auto() -> Self
pub fn auto() -> Self
The budget this process uses when the caller sets none.
MOLFRAME_MEMORY_BUDGET wins when it parses (see MemoryBudget::parse);
an unparsable value is reported once on stderr and ignored. Otherwise the
budget is MemoryBudget::for_physical_memory of the physical memory this
process may use: the container limit when one is set, available memory on
Linux, total memory on macOS. A platform that cannot report memory gets 1 GiB.
Sourcepub fn for_physical_memory(physical_bytes: usize) -> Self
pub fn for_physical_memory(physical_bytes: usize) -> Self
Forty percent of physical_bytes, clamped to 100 MB through 512 GiB.
Sourcepub fn parse(text: &str) -> Result<Self, MemoryBudgetError>
pub fn parse(text: &str) -> Result<Self, MemoryBudgetError>
Parses a byte count such as 123456, 512MB, 4GiB or 1.5G.
KB, MB, GB, TB are powers of 1000; K, KiB and so on, and a bare
K/M/G/T, are powers of 1024.
§Errors
Returns MemoryBudgetError::Zero for zero and
MemoryBudgetError::Unparsable for anything else that is not a size.
Trait Implementations§
Source§impl Clone for MemoryBudget
impl Clone for MemoryBudget
impl Copy for MemoryBudget
Source§impl Debug for MemoryBudget
impl Debug for MemoryBudget
Source§impl Default for MemoryBudget
impl Default for MemoryBudget
Source§fn default() -> Self
fn default() -> Self
The machine-scaled budget of MemoryBudget::auto.
impl Eq for MemoryBudget
Source§impl PartialEq for MemoryBudget
impl PartialEq for MemoryBudget
impl StructuralPartialEq for MemoryBudget
Auto Trait Implementations§
impl Freeze for MemoryBudget
impl RefUnwindSafe for MemoryBudget
impl Send for MemoryBudget
impl Sync for MemoryBudget
impl Unpin for MemoryBudget
impl UnsafeUnpin for MemoryBudget
impl UnwindSafe for MemoryBudget
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more