pub struct Normalized<S>(/* private fields */);Expand description
Scalars in the closed unit interval [0, 1]
Implementations§
Source§impl<S> Normalized<S>
impl<S> Normalized<S>
pub fn zero() -> Self
pub fn is_zero(&self) -> bool
Sourcepub fn new(value: S) -> Option<Self>where
S: PartialOrd,
pub fn new(value: S) -> Option<Self>where
S: PartialOrd,
Returns ‘None’ when called with a value outside of the closed unit interval [0,1].
§Example
assert!(Normalized::new (2.0).is_none());
assert!(Normalized::new (1.0).is_some());
assert!(Normalized::new (0.5).is_some());
assert!(Normalized::new (0.0).is_some());
assert!(Normalized::new (-1.0).is_none());Sourcepub fn clamp(value: S) -> Selfwhere
S: MinMax,
pub fn clamp(value: S) -> Selfwhere
S: MinMax,
Clamps to the closed unit interval [0,1].
§Example
assert_eq!(*Normalized::clamp (2.0), 1.0);
assert_eq!(*Normalized::clamp (-1.0), 0.0);Sourcepub fn noisy(value: S) -> Selfwhere
S: PartialOrd,
pub fn noisy(value: S) -> Selfwhere
S: PartialOrd,
Sourcepub fn unchecked(value: S) -> Selfwhere
S: PartialOrd,
pub fn unchecked(value: S) -> Selfwhere
S: PartialOrd,
Create a new normalized number without checking the value.
This method is completely unchecked for release builds. Debug builds will panic if the value is negative:
ⓘ
let normalized = Normalized::unchecked (1.5); // panic!Sourcepub fn map_clamp<F>(self, fun: F) -> Self
pub fn map_clamp<F>(self, fun: F) -> Self
Map an operation on the underlying scalar, clamping results to the closed unit interval [0,1].
§Example
assert_eq!(*Normalized::<f64>::one().map_clamp (|x| 2.0 * x), 1.0);
assert_eq!(*Normalized::<f64>::one().map_clamp (|x| -2.0 * x), 0.0);Sourcepub fn map_noisy<F>(self, fun: F) -> Selfwhere
S: PartialOrd,
F: FnMut(S) -> S,
pub fn map_noisy<F>(self, fun: F) -> Selfwhere
S: PartialOrd,
F: FnMut(S) -> S,
Map an operation on the underlying scalar, panicking if the result is outside the unit interval [0,1].
§Example
assert_eq!(*Normalized::<f64>::one().map_noisy (|x| 0.5 * x), 0.5);§Panics
Panics of the result is outside [0,1]:
ⓘ
let v = Normalized::<f64>::one().map_noisy (|x| -1.0 * x); // panic!ⓘ
let v = Normalized::<f64>::one().map_noisy (|x| 2.0 * x); // panic!Source§impl Normalized<f32>
impl Normalized<f32>
Source§impl Normalized<f64>
impl Normalized<f64>
Source§impl<S> Normalized<S>
impl<S> Normalized<S>
Trait Implementations§
Source§impl<S: Clone> Clone for Normalized<S>
impl<S: Clone> Clone for Normalized<S>
Source§fn clone(&self) -> Normalized<S>
fn clone(&self) -> Normalized<S>
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<S: Copy> Copy for Normalized<S>
Source§impl<S: Debug> Debug for Normalized<S>
impl<S: Debug> Debug for Normalized<S>
Source§impl<S: Default> Default for Normalized<S>
impl<S: Default> Default for Normalized<S>
Source§fn default() -> Normalized<S>
fn default() -> Normalized<S>
Returns the “default value” for a type. Read more
Source§impl<S> Deref for Normalized<S>
impl<S> Deref for Normalized<S>
Source§impl<S> Display for Normalized<S>where
S: Display,
impl<S> Display for Normalized<S>where
S: Display,
impl<S: PartialEq> Eq for Normalized<S>
Source§impl<S: OrderedField> From<Normalized<S>> for NormalSigned<S>
impl<S: OrderedField> From<Normalized<S>> for NormalSigned<S>
Source§fn from(Normalized: Normalized<S>) -> Self
fn from(Normalized: Normalized<S>) -> Self
Converts to this type from the input type.
Source§impl<S: Ring> Mul for Normalized<S>
impl<S: Ring> Mul for Normalized<S>
Source§impl<S> NumCast for Normalized<S>
impl<S> NumCast for Normalized<S>
Source§fn from<T: ToPrimitive>(n: T) -> Option<Normalized<S>>
fn from<T: ToPrimitive>(n: T) -> Option<Normalized<S>>
Creates a number from another value that can be converted into
a primitive via the
ToPrimitive trait. If the source value cannot be
represented by the target type, then None is returned. Read moreSource§impl<S: Ring> One for Normalized<S>
impl<S: Ring> One for Normalized<S>
Source§impl<S: PartialOrd> Ord for Normalized<S>
impl<S: PartialOrd> Ord for Normalized<S>
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<S: PartialEq> PartialEq for Normalized<S>
impl<S: PartialEq> PartialEq for Normalized<S>
Source§fn eq(&self, other: &Normalized<S>) -> bool
fn eq(&self, other: &Normalized<S>) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl<S: PartialOrd> PartialOrd for Normalized<S>
impl<S: PartialOrd> PartialOrd for Normalized<S>
impl<S> StructuralPartialEq for Normalized<S>
Source§impl<S> ToPrimitive for Normalized<S>where
S: ToPrimitive,
impl<S> ToPrimitive for Normalized<S>where
S: ToPrimitive,
Source§fn to_isize(&self) -> Option<isize>
fn to_isize(&self) -> Option<isize>
Converts the value of
self to an isize. If the value cannot be
represented by an isize, then None is returned.Source§fn to_i8(&self) -> Option<i8>
fn to_i8(&self) -> Option<i8>
Converts the value of
self to an i8. If the value cannot be
represented by an i8, then None is returned.Source§fn to_i16(&self) -> Option<i16>
fn to_i16(&self) -> Option<i16>
Converts the value of
self to an i16. If the value cannot be
represented by an i16, then None is returned.Source§fn to_i32(&self) -> Option<i32>
fn to_i32(&self) -> Option<i32>
Converts the value of
self to an i32. If the value cannot be
represented by an i32, then None is returned.Source§fn to_i64(&self) -> Option<i64>
fn to_i64(&self) -> Option<i64>
Converts the value of
self to an i64. If the value cannot be
represented by an i64, then None is returned.Source§fn to_usize(&self) -> Option<usize>
fn to_usize(&self) -> Option<usize>
Converts the value of
self to a usize. If the value cannot be
represented by a usize, then None is returned.Source§fn to_u8(&self) -> Option<u8>
fn to_u8(&self) -> Option<u8>
Converts the value of
self to a u8. If the value cannot be
represented by a u8, then None is returned.Source§fn to_u16(&self) -> Option<u16>
fn to_u16(&self) -> Option<u16>
Converts the value of
self to a u16. If the value cannot be
represented by a u16, then None is returned.Source§fn to_u32(&self) -> Option<u32>
fn to_u32(&self) -> Option<u32>
Converts the value of
self to a u32. If the value cannot be
represented by a u32, then None is returned.Source§fn to_u64(&self) -> Option<u64>
fn to_u64(&self) -> Option<u64>
Converts the value of
self to a u64. If the value cannot be
represented by a u64, then None is returned.Source§fn to_f32(&self) -> Option<f32>
fn to_f32(&self) -> Option<f32>
Converts the value of
self to an f32. Overflows may map to positive
or negative inifinity, otherwise None is returned if the value cannot
be represented by an f32.Source§fn to_f64(&self) -> Option<f64>
fn to_f64(&self) -> Option<f64>
Converts the value of
self to an f64. Overflows may map to positive
or negative inifinity, otherwise None is returned if the value cannot
be represented by an f64. Read moreAuto Trait Implementations§
impl<S> Freeze for Normalized<S>where
S: Freeze,
impl<S> RefUnwindSafe for Normalized<S>where
S: RefUnwindSafe,
impl<S> Send for Normalized<S>where
S: Send,
impl<S> Sync for Normalized<S>where
S: Sync,
impl<S> Unpin for Normalized<S>where
S: Unpin,
impl<S> UnsafeUnpin for Normalized<S>where
S: UnsafeUnpin,
impl<S> UnwindSafe for Normalized<S>where
S: UnwindSafe,
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
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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 moreSource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Performs the conversion.
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Performs the conversion.
impl<T> MaybeSerDes for T
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> SemigroupAction<Multiplication, T> for Twhere
Multiplication: Semigroup<T>,
impl<T> SemigroupAction<Multiplication, T> for Twhere
Multiplication: Semigroup<T>,
Source§impl<T> StrictAs for T
impl<T> StrictAs for T
Source§fn strict_as<Dst>(self) -> Dstwhere
T: StrictCast<Dst>,
fn strict_as<Dst>(self) -> Dstwhere
T: StrictCast<Dst>,
Casts the value.
Source§impl<Src, Dst> StrictCastFrom<Src> for Dstwhere
Src: StrictCast<Dst>,
impl<Src, Dst> StrictCastFrom<Src> for Dstwhere
Src: StrictCast<Dst>,
Source§fn strict_cast_from(src: Src) -> Dst
fn strict_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
Source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
Source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
Source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
Source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.