Skip to main content

Scale

Struct Scale 

pub struct Scale<T, Src, Dst>(pub T, _);
Available on crate feature geometry only.
Expand description

A scaling factor between two different units of measurement.

This is effectively a type-safe float, intended to be used in combination with other types like length::Length to enforce conversion between systems of measurement at compile time.

Src and Dst represent the units before and after multiplying a value by a Scale. They may be types without values, such as empty enums. For example:

use euclid::Scale;
use euclid::Length;
enum Mm {};
enum Inch {};

let mm_per_inch: Scale<f32, Inch, Mm> = Scale::new(25.4);

let one_foot: Length<f32, Inch> = Length::new(12.0);
let one_foot_in_mm: Length<f32, Mm> = one_foot * mm_per_inch;

Tuple Fields§

§0: T

Implementations§

§

impl<T, Src, Dst> Scale<T, Src, Dst>

pub const fn new(x: T) -> Scale<T, Src, Dst>

Available on crate feature canvas only.

pub fn identity() -> Scale<T, Src, Dst>
where T: One,

Available on crate feature canvas only.

Creates an identity scale (1.0).

pub fn transform_point( self, point: Point2D<T, Src>, ) -> Point2D<<T as Mul>::Output, Dst>
where T: Copy + Mul,

Available on crate feature canvas only.

Returns the given point transformed by this scale.

§Example
use euclid::{Scale, point2};
enum Mm {};
enum Cm {};

let to_mm: Scale<i32, Cm, Mm> = Scale::new(10);

assert_eq!(to_mm.transform_point(point2(42, -42)), point2(420, -420));

pub fn transform_point3d( self, point: Point3D<T, Src>, ) -> Point3D<<T as Mul>::Output, Dst>
where T: Copy + Mul,

Available on crate feature canvas only.

Returns the given point transformed by this scale.

pub fn transform_vector( self, vec: Vector2D<T, Src>, ) -> Vector2D<<T as Mul>::Output, Dst>
where T: Copy + Mul,

Available on crate feature canvas only.

Returns the given vector transformed by this scale.

§Example
use euclid::{Scale, vec2};
enum Mm {};
enum Cm {};

let to_mm: Scale<i32, Cm, Mm> = Scale::new(10);

assert_eq!(to_mm.transform_vector(vec2(42, -42)), vec2(420, -420));

pub fn transform_size( self, size: Size2D<T, Src>, ) -> Size2D<<T as Mul>::Output, Dst>
where T: Copy + Mul,

Available on crate feature canvas only.

Returns the given size transformed by this scale.

§Example
use euclid::{Scale, size2};
enum Mm {};
enum Cm {};

let to_mm: Scale<i32, Cm, Mm> = Scale::new(10);

assert_eq!(to_mm.transform_size(size2(42, -42)), size2(420, -420));

pub fn transform_rect( self, rect: &Rect<T, Src>, ) -> Rect<<T as Mul>::Output, Dst>
where T: Copy + Mul,

Available on crate feature canvas only.

Returns the given rect transformed by this scale.

§Example
use euclid::{Scale, rect};
enum Mm {};
enum Cm {};

let to_mm: Scale<i32, Cm, Mm> = Scale::new(10);

assert_eq!(to_mm.transform_rect(&rect(1, 2, 42, -42)), rect(10, 20, 420, -420));

pub fn transform_box2d( self, b: &Box2D<T, Src>, ) -> Box2D<<T as Mul>::Output, Dst>
where T: Copy + Mul,

Available on crate feature canvas only.

Returns the given box transformed by this scale.

pub fn transform_box3d( self, b: &Box3D<T, Src>, ) -> Box3D<<T as Mul>::Output, Dst>
where T: Copy + Mul,

Available on crate feature canvas only.

Returns the given box transformed by this scale.

pub fn is_identity(self) -> bool
where T: PartialEq + One,

Available on crate feature canvas only.

Returns true if this scale has no effect.

§Example
use euclid::Scale;
use euclid::num::One;
enum Mm {};
enum Cm {};

let cm_per_mm: Scale<f32, Mm, Cm> = Scale::new(0.1);
let mm_per_mm: Scale<f32, Mm, Mm> = Scale::new(1.0);

assert_eq!(cm_per_mm.is_identity(), false);
assert_eq!(mm_per_mm.is_identity(), true);
assert_eq!(mm_per_mm, Scale::one());

pub fn get(self) -> T

Available on crate feature canvas only.

Returns the underlying scalar scale factor.

pub fn inverse(self) -> Scale<<T as Div>::Output, Dst, Src>
where T: One + Div,

Available on crate feature canvas only.

The inverse Scale (1.0 / self).

§Example
use euclid::Scale;
enum Mm {};
enum Cm {};

let cm_per_mm: Scale<f32, Cm, Mm> = Scale::new(0.1);

assert_eq!(cm_per_mm.inverse(), Scale::new(10.0));

pub fn with_source<NewSrc>(self) -> Scale<T, NewSrc, Dst>

Available on crate feature canvas only.

Returns the same transform with a different source unit.

pub fn with_destination<NewDst>(self) -> Scale<T, Src, NewDst>

Available on crate feature canvas only.

Returns the same transform with a different destination unit.

§

impl<T, Src, Dst> Scale<T, Src, Dst>
where T: PartialOrd,

pub fn min(self, other: Scale<T, Src, Dst>) -> Scale<T, Src, Dst>

Available on crate feature canvas only.

pub fn max(self, other: Scale<T, Src, Dst>) -> Scale<T, Src, Dst>

Available on crate feature canvas only.

pub fn clamp( self, start: Scale<T, Src, Dst>, end: Scale<T, Src, Dst>, ) -> Scale<T, Src, Dst>
where T: Copy,

Available on crate feature canvas only.

Returns the point each component of which clamped by corresponding components of start and end.

Shortcut for self.max(start).min(end).

§

impl<T, Src, Dst> Scale<T, Src, Dst>
where T: NumCast,

pub fn cast<NewT>(self) -> Scale<NewT, Src, Dst>
where NewT: NumCast,

Available on crate feature canvas only.

Cast from one numeric representation to another, preserving the units.

§Panics

If the source value cannot be represented by the target type NewT, then method panics. Use try_cast if that must be case.

§Example
use euclid::Scale;
enum Mm {};
enum Cm {};

let to_mm: Scale<i32, Cm, Mm> = Scale::new(10);

assert_eq!(to_mm.cast::<f32>(), Scale::new(10.0));

That conversion will panic, because i32 not enough to store such big numbers:

use euclid::Scale;
enum Mm {};// millimeter = 10^-2 meters
enum Em {};// exameter   = 10^18 meters

// Panics
let to_em: Scale<i32, Mm, Em> = Scale::new(10e20).cast();

pub fn try_cast<NewT>(self) -> Option<Scale<NewT, Src, Dst>>
where NewT: NumCast,

Available on crate feature canvas only.

Fallible cast from one numeric representation to another, preserving the units. If the source value cannot be represented by the target type NewT, then None is returned.

§Example
use euclid::Scale;
enum Mm {};
enum Cm {};
enum Em {};// Exameter = 10^18 meters

let to_mm: Scale<i32, Cm, Mm> = Scale::new(10);
let to_em: Scale<f32, Mm, Em> = Scale::new(10e20);

assert_eq!(to_mm.try_cast::<f32>(), Some(Scale::new(10.0)));
// Integer to small to store that number
assert_eq!(to_em.try_cast::<i32>(), None);

Trait Implementations§

§

impl<T, Src, Dst> Add for Scale<T, Src, Dst>
where T: Add,

§

type Output = Scale<<T as Add>::Output, Src, Dst>

The resulting type after applying the + operator.
§

fn add(self, other: Scale<T, Src, Dst>) -> <Scale<T, Src, Dst> as Add>::Output

Performs the + operation. Read more
§

impl<T, Src, Dst> Clone for Scale<T, Src, Dst>
where T: Clone,

§

fn clone(&self) -> Scale<T, Src, Dst>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl<T, Src, Dst> Debug for Scale<T, Src, Dst>
where T: Debug,

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<T, Src, Dst> Default for Scale<T, Src, Dst>
where T: Default,

§

fn default() -> Scale<T, Src, Dst>

Returns the “default value” for a type. Read more
§

impl<Src, Dst, T> Div<Scale<T, Src, Dst>> for Length<T, Dst>
where T: Div,

§

type Output = Length<<T as Div>::Output, Src>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, Src, Dst>, ) -> <Length<T, Dst> as Div<Scale<T, Src, Dst>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Box2D<T, U2>
where T: Copy + Div,

§

type Output = Box2D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Box2D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Box3D<T, U2>
where T: Copy + Div,

§

type Output = Box3D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Box3D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Point2D<T, U2>
where T: Copy + Div,

§

type Output = Point2D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Point2D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Point3D<T, U2>
where T: Copy + Div,

§

type Output = Point3D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Point3D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Rect<T, U2>
where T: Copy + Div,

§

type Output = Rect<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Rect<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for SideOffsets2D<T, U2>
where T: Copy + Div,

§

type Output = SideOffsets2D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <SideOffsets2D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Size2D<T, U2>
where T: Copy + Div,

§

type Output = Size2D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Size2D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Size3D<T, U2>
where T: Copy + Div,

§

type Output = Size3D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Size3D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Vector2D<T, U2>
where T: Copy + Div,

§

type Output = Vector2D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Vector2D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U1, U2> Div<Scale<T, U1, U2>> for Vector3D<T, U2>
where T: Copy + Div,

§

type Output = Vector3D<<T as Div>::Output, U1>

The resulting type after applying the / operator.
§

fn div( self, scale: Scale<T, U1, U2>, ) -> <Vector3D<T, U2> as Div<Scale<T, U1, U2>>>::Output

Performs the / operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Box2D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, scale: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Box3D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, scale: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Point2D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, scale: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Point3D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, scale: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Rect<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, scale: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for SideOffsets2D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, other: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Size2D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, other: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Size3D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, other: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Vector2D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, scale: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, U> DivAssign<Scale<T, U, U>> for Vector3D<T, U>
where T: Copy + DivAssign,

§

fn div_assign(&mut self, scale: Scale<T, U, U>)

Performs the /= operation. Read more
§

impl<T, Src, Dst> From<Scale<T, Src, Dst>> for ScaleOffset2D<T, Src, Dst>
where T: Copy + Zero,

§

fn from(s: Scale<T, Src, Dst>) -> ScaleOffset2D<T, Src, Dst>

Converts to this type from the input type.
§

impl<T, Src, Dst> From<Scale<T, Src, Dst>> for Transform2D<T, Src, Dst>
where T: Copy + Zero,

§

fn from(s: Scale<T, Src, Dst>) -> Transform2D<T, Src, Dst>

Converts to this type from the input type.
§

impl<T, Src, Dst> From<Scale<T, Src, Dst>> for Transform3D<T, Src, Dst>
where T: Copy + Zero + One,

§

fn from(s: Scale<T, Src, Dst>) -> Transform3D<T, Src, Dst>

Converts to this type from the input type.
§

impl<T, Src, Dst> Hash for Scale<T, Src, Dst>
where T: Hash,

§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl<T, A, B, C> Mul<Scale<T, B, C>> for Scale<T, A, B>
where T: Mul,

§

type Output = Scale<<T as Mul>::Output, A, C>

The resulting type after applying the * operator.
§

fn mul( self, other: Scale<T, B, C>, ) -> <Scale<T, A, B> as Mul<Scale<T, B, C>>>::Output

Performs the * operation. Read more
§

impl<Src, Dst, T> Mul<Scale<T, Src, Dst>> for Length<T, Src>
where T: Mul,

§

type Output = Length<<T as Mul>::Output, Dst>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, Src, Dst>, ) -> <Length<T, Src> as Mul<Scale<T, Src, Dst>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Box2D<T, U1>
where T: Copy + Mul,

§

type Output = Box2D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Box2D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Box3D<T, U1>
where T: Copy + Mul,

§

type Output = Box3D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Box3D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Point2D<T, U1>
where T: Copy + Mul,

§

type Output = Point2D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Point2D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Point3D<T, U1>
where T: Copy + Mul,

§

type Output = Point3D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Point3D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Rect<T, U1>
where T: Copy + Mul,

§

type Output = Rect<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Rect<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for SideOffsets2D<T, U1>
where T: Copy + Mul,

§

type Output = SideOffsets2D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <SideOffsets2D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Size2D<T, U1>
where T: Copy + Mul,

§

type Output = Size2D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Size2D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Size3D<T, U1>
where T: Copy + Mul,

§

type Output = Size3D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Size3D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Vector2D<T, U1>
where T: Copy + Mul,

§

type Output = Vector2D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Vector2D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U1, U2> Mul<Scale<T, U1, U2>> for Vector3D<T, U1>
where T: Copy + Mul,

§

type Output = Vector3D<<T as Mul>::Output, U2>

The resulting type after applying the * operator.
§

fn mul( self, scale: Scale<T, U1, U2>, ) -> <Vector3D<T, U1> as Mul<Scale<T, U1, U2>>>::Output

Performs the * operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Box2D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, scale: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Box3D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, scale: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Point2D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, scale: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Point3D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, scale: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Rect<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, scale: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for SideOffsets2D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, other: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Size2D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, other: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Size3D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, other: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Vector2D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, scale: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, U> MulAssign<Scale<T, U, U>> for Vector3D<T, U>
where T: Copy + MulAssign,

§

fn mul_assign(&mut self, scale: Scale<T, U, U>)

Performs the *= operation. Read more
§

impl<T, Src, Dst> One for Scale<T, Src, Dst>
where T: One,

§

fn one() -> Scale<T, Src, Dst>

§

impl<T, Src, Dst> Ord for Scale<T, Src, Dst>
where T: Ord,

§

fn cmp(&self, other: &Scale<T, Src, Dst>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
§

impl<T, Src, Dst> PartialEq for Scale<T, Src, Dst>
where T: PartialEq,

§

fn eq(&self, other: &Scale<T, Src, Dst>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl<T, Src, Dst> PartialOrd for Scale<T, Src, Dst>
where T: PartialOrd,

§

fn partial_cmp(&self, other: &Scale<T, Src, Dst>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
§

impl<T, Src, Dst> Sub for Scale<T, Src, Dst>
where T: Sub,

§

type Output = Scale<<T as Sub>::Output, Src, Dst>

The resulting type after applying the - operator.
§

fn sub(self, other: Scale<T, Src, Dst>) -> <Scale<T, Src, Dst> as Sub>::Output

Performs the - operation. Read more
§

impl<S> Transformation<S> for Scale<S, UnknownUnit, UnknownUnit>
where S: Scalar,

§

impl<T, Src, Dst> Copy for Scale<T, Src, Dst>
where T: Copy,

§

impl<T, Src, Dst> Eq for Scale<T, Src, Dst>
where T: Eq,

Auto Trait Implementations§

§

impl<T, Src, Dst> Freeze for Scale<T, Src, Dst>
where T: Freeze,

§

impl<T, Src, Dst> RefUnwindSafe for Scale<T, Src, Dst>

§

impl<T, Src, Dst> Send for Scale<T, Src, Dst>
where T: Send, Src: Send, Dst: Send,

§

impl<T, Src, Dst> Sync for Scale<T, Src, Dst>
where T: Sync, Src: Sync, Dst: Sync,

§

impl<T, Src, Dst> Unpin for Scale<T, Src, Dst>
where T: Unpin, Src: Unpin, Dst: Unpin,

§

impl<T, Src, Dst> UnsafeUnpin for Scale<T, Src, Dst>
where T: UnsafeUnpin,

§

impl<T, Src, Dst> UnwindSafe for Scale<T, Src, Dst>
where T: UnwindSafe, Src: UnwindSafe, Dst: UnwindSafe,

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
§

impl<T> Also for T

§

fn also<F>(self, block: F) -> Self
where F: FnOnce(&mut Self),

Apply a function to this value and return the (possibly) modified value.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AnyEq for T
where T: Any + PartialEq,

§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

§

fn as_any(&self) -> &(dyn Any + 'static)

§

impl<T, Res> Apply<Res> for T
where T: ?Sized,

§

fn apply<F>(self, f: F) -> Res
where F: FnOnce(Self) -> Res, Self: Sized,

Apply a function which takes the parameter by value.
§

fn apply_ref<F>(&self, f: F) -> Res
where F: FnOnce(&Self) -> Res,

Apply a function which takes the parameter by reference.
§

fn apply_mut<F>(&mut self, f: F) -> Res
where F: FnOnce(&mut Self) -> Res,

Apply a function which takes the parameter by mutable reference.
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
§

impl<State, Message> IntoBoot<State, Message> for State

§

fn into_boot(self) -> (State, Task<Message>)

Turns some type into the initial state of some Application.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> MaybeClone for T

§

impl<T> MaybeDebug for T

§

impl<T> MaybeSend for T
where T: Send,

§

impl<T> MaybeSend for T
where T: Send,

§

impl<T> MaybeSync for T
where T: Sync,

§

impl<T> MaybeSync for T
where T: Sync,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,