Struct UnitCatalog
pub struct UnitCatalog;Description
The compiler’s closed multiplicative unit vocabulary.
Source lowering and authoring clients share these symbols and prefix rules. Scale evaluation remains at the compiler quantity boundary.
Implementations§
§impl UnitCatalog
impl UnitCatalog
pub const PRESENTATION_ROUNDING: &'static str = "nearest-ties-even"
pub const PRESENTATION_ROUNDING: &'static str = "nearest-ties-even"
Rounding policy shared by displayed values, copy text and export metadata.
pub fn display_quantity(
value: DynQuantity,
unit: &Expr,
) -> Result<f64, &'static str>
pub fn display_quantity( value: DynQuantity, unit: &Expr, ) -> Result<f64, &'static str>
Convert a stored coherent-SI quantity to an explicitly chosen linear unit.
The stored binary64 is interpreted exactly; conversion by the exact decimal unit scale rounds once to binary64, to nearest with ties to even. This does not modify the quantity or infer affine, phase or spectral conventions.
§Errors
Rejects incompatible dimensions, unavailable units, nonfinite values, overflow and nonzero underflow of the displayed value.
pub fn present_quantity(
value: DynQuantity,
unit: &Expr,
decimal_places: u8,
locale: &str,
) -> Result<(f64, String), &'static str>
pub fn present_quantity( value: DynQuantity, unit: &Expr, decimal_places: u8, locale: &str, ) -> Result<(f64, String), &'static str>
Render a chosen unit with explicit fixed decimal precision and C locale.
Returns the unformatted converted value and copy/accessibility text. Text uses nearest-even decimal rounding; the stored quantity is unchanged.
§Errors
Rejects unsupported locales, more than 17 decimal places, unit labels over 4096 bytes, and any failed typed conversion.
§impl UnitCatalog
impl UnitCatalog
pub fn symbols() -> impl Iterator<Item = (&'static str, bool)>
pub fn symbols() -> impl Iterator<Item = (&'static str, bool)>
Bare input symbols and whether one decimal prefix may be applied.
pub fn prefixes() -> impl Iterator<Item = &'static str>
pub fn prefixes() -> impl Iterator<Item = &'static str>
Case-sensitive decimal prefixes. A symbol takes at most one prefix.
pub fn quantity(
value: &DecimalLiteral,
expression: &Expr,
) -> Result<DynQuantity, &'static str>
pub fn quantity( value: &DecimalLiteral, expression: &Expr, ) -> Result<DynQuantity, &'static str>
Normalize an exact decimal input quantity to coherent SI with one rounding.
Uses the same closed multiplicative units as source literals. This is an input conversion, not an affine-temperature or presentation-unit conversion.
§Errors
Rejects invalid units, inexact scale roots, exponent overflow, nonfinite results and nonzero values below the binary64 range.
Auto Trait Implementations§
impl Freeze for UnitCatalog
impl RefUnwindSafe for UnitCatalog
impl Send for UnitCatalog
impl Sync for UnitCatalog
impl Unpin for UnitCatalog
impl UnsafeUnpin for UnitCatalog
impl UnwindSafe for UnitCatalog
Blanket Implementations§
Source§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
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
§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
§fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
§fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> Twhere
Self: Distribution<T>,
Source§impl<T> From<T> for T
impl<T> From<T> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
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>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
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§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Same for T
impl<T> Same for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.