pub struct Precision(/* private fields */);Expand description
A numeric precision, validated at config load.
Kept as a newtype over the name rather than an enum because the set is open
by design: any fNeXmY minifloat is legal, and the model crate maps the name
to compile flags. What a type buys here is that a typo fails when the config
is read, naming the file, instead of surfacing as a puzzling compile flag
on node three — and that Self::bits lives with the thing it describes.
Serialized as the plain string, so existing configs are unchanged.
Implementations§
Source§impl Precision
impl Precision
pub fn as_str(&self) -> &str
Sourcepub fn bits(&self) -> Option<f64>
pub fn bits(&self) -> Option<f64>
Bits per weight, for scaling a cost model between precisions.
Understands the fNeXmY family as well as the named shorthands, so a
precision ladder can step onto f6e3m2 and have it actually cost
something — the previous lookup table silently ignored anything it did
not list by name.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Precision
impl<'de> Deserialize<'de> for Precision
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Precision
impl StructuralPartialEq for Precision
Auto Trait Implementations§
impl Freeze for Precision
impl RefUnwindSafe for Precision
impl Send for Precision
impl Sync for Precision
impl Unpin for Precision
impl UnsafeUnpin for Precision
impl UnwindSafe for Precision
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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