pub struct MagnitudeLimit { /* private fields */ }Expand description
A finite ceiling for arbitrary-precision literal and result magnitude.
The limit is expressed in binary bits so domains with native bit-length
metadata can enforce it directly. Decimal literal parsers can use
MagnitudeLimit::check_decimal_digits to conservatively estimate the same
budget before allocating big integer storage.
§Examples
use sim_lib_numbers_core::MagnitudeLimit;
let limit = MagnitudeLimit::new(128);
assert!(limit.check_bits("integer result", 127).is_ok());
assert!(limit.check_decimal_digits("decimal literal", 1_000).is_err());Implementations§
Source§impl MagnitudeLimit
impl MagnitudeLimit
Sourcepub const fn default_arbitrary_precision() -> Self
pub const fn default_arbitrary_precision() -> Self
Returns the default arbitrary-precision magnitude limit.
Sourcepub fn check_bits(self, context: &str, estimated_bits: u64) -> Result<()>
pub fn check_bits(self, context: &str, estimated_bits: u64) -> Result<()>
Checks a known binary bit length against this limit.
Sourcepub fn check_decimal_digits(self, context: &str, digits: usize) -> Result<u64>
pub fn check_decimal_digits(self, context: &str, digits: usize) -> Result<u64>
Checks a decimal digit count against this limit, returning the estimated binary bit length when it fits.
Sourcepub fn max_decimal_digits(self) -> usize
pub fn max_decimal_digits(self) -> usize
Returns the largest decimal digit count conservatively accepted by this bit budget.
Trait Implementations§
Source§impl Clone for MagnitudeLimit
impl Clone for MagnitudeLimit
Source§fn clone(&self) -> MagnitudeLimit
fn clone(&self) -> MagnitudeLimit
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for MagnitudeLimit
Source§impl Debug for MagnitudeLimit
impl Debug for MagnitudeLimit
Source§impl Default for MagnitudeLimit
impl Default for MagnitudeLimit
impl Eq for MagnitudeLimit
Source§impl PartialEq for MagnitudeLimit
impl PartialEq for MagnitudeLimit
impl StructuralPartialEq for MagnitudeLimit
Auto Trait Implementations§
impl Freeze for MagnitudeLimit
impl RefUnwindSafe for MagnitudeLimit
impl Send for MagnitudeLimit
impl Sync for MagnitudeLimit
impl Unpin for MagnitudeLimit
impl UnsafeUnpin for MagnitudeLimit
impl UnwindSafe for MagnitudeLimit
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
Mutably borrows from an owned value. Read more