# [−][src]Struct nalgebra::geometry::Transform

    #[repr(C)]
    pub struct Transform<N: RealField, D: DimNameAdd<U1>, C: TCategory> where
        DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,  { /* fields omitted */ }

A transformation matrix in homogeneous coordinates.

It is stored as a matrix with dimensions `(D + 1, D + 1)`, e.g., it stores a 4x4 matrix for a 3D transformation.

## Methods

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> Transform<N, D, C> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `pub fn from_matrix_unchecked(matrix: MatrixN<N, DimNameSum<D, U1>>) -> Self`[src]

Creates a new transformation from the given homogeneous matrix. The transformation category of `Self` is not checked to be verified by the given matrix.

#### `pub fn into_inner(self) -> MatrixN<N, DimNameSum<D, U1>>`[src]

Retrieves the underlying matrix.

# Examples

    let m = Matrix3::new(1.0, 2.0, 0.0,
                         3.0, 4.0, 0.0,
                         0.0, 0.0, 1.0);
    let t = Transform2::from_matrix_unchecked(m);
    assert_eq!(t.into_inner(), m);

#### `pub fn unwrap(self) -> MatrixN<N, DimNameSum<D, U1>>`[src]

Deprecated:

use `.into_inner()` instead

Retrieves the underlying matrix. Deprecated: Use [Transform::into_inner] instead.

#### `pub fn matrix(&self) -> &MatrixN<N, DimNameSum<D, U1>>`[src]

A reference to the underlying matrix.

# Examples

    let m = Matrix3::new(1.0, 2.0, 0.0,
                         3.0, 4.0, 0.0,
                         0.0, 0.0, 1.0);
    let t = Transform2::from_matrix_unchecked(m);
    assert_eq!(*t.matrix(), m);

#### `pub fn matrix_mut_unchecked(&mut self) -> &mut MatrixN<N, DimNameSum<D, U1>>`[src]

A mutable reference to the underlying matrix.

It is `_unchecked` because direct modifications of this matrix may break invariants identified by this transformation category.

# Examples

    let m = Matrix3::new(1.0, 2.0, 0.0,
                         3.0, 4.0, 0.0,
                         0.0, 0.0, 1.0);
    let mut t = Transform2::from_matrix_unchecked(m);
    t.matrix_mut_unchecked().m12 = 42.0;
    t.matrix_mut_unchecked().m23 = 90.0;

    let expected = Matrix3::new(1.0, 42.0, 0.0,
                                3.0, 4.0,  90.0,
                                0.0, 0.0,  1.0);
    assert_eq!(*t.matrix(), expected);

#### `pub fn set_category<CNew: SuperTCategoryOf<C>>(self) -> Transform<N, D, CNew>`[src]

Sets the category of this transform.

This can be done only if the new category is more general than the current one, e.g., a transform with category `TProjective` cannot be converted to a transform with category `TAffine` because not all projective transformations are affine (the other way-round is valid though).

#### `pub fn clone_owned(&self) -> Transform<N, D, C>`[src]

Deprecated:

This method is redundant with automatic `Copy` and the `.clone()` method and will be removed in a future release.

Clones this transform into one that owns its data.

#### `pub fn to_homogeneous(&self) -> MatrixN<N, DimNameSum<D, U1>>`[src]

Converts this transform into its equivalent homogeneous transformation matrix.

# Examples

    let m = Matrix3::new(1.0, 2.0, 0.0,
                         3.0, 4.0, 0.0,
                         0.0, 0.0, 1.0);
    let t = Transform2::from_matrix_unchecked(m);
    assert_eq!(t.into_inner(), m);

#### `pub fn try_inverse(self) -> Option<Transform<N, D, C>>`[src]

Attempts to invert this transformation. You may use `.inverse` instead of this transformation has a subcategory of `TProjective` (i.e. if it is a `Projective{2,3}` or `Affine{2,3}`).

# Examples

    let m = Matrix3::new(2.0, 2.0, -0.3,
                         3.0, 4.0, 0.1,
                         0.0, 0.0, 1.0);
    let t = Transform2::from_matrix_unchecked(m);
    let inv_t = t.try_inverse().unwrap();
    assert_relative_eq!(t * inv_t, Transform2::identity());
    assert_relative_eq!(inv_t * t, Transform2::identity());

    // Non-invertible case.
    let m = Matrix3::new(0.0, 2.0, 1.0,
                         3.0, 0.0, 5.0,
                         0.0, 0.0, 0.0);
    let t = Transform2::from_matrix_unchecked(m);
    assert!(t.try_inverse().is_none());

#### `pub fn inverse(self) -> Transform<N, D, C> where
C: SubTCategoryOf<TProjective>,` [src]

Inverts this transformation. Use `.try_inverse` if this transform has the `TGeneral` category (i.e., a `Transform{2,3}` may not be invertible).

# Examples

    let m = Matrix3::new(2.0, 2.0, -0.3,
                         3.0, 4.0, 0.1,
                         0.0, 0.0, 1.0);
    let proj = Projective2::from_matrix_unchecked(m);
    let inv_t = proj.inverse();
    assert_relative_eq!(proj * inv_t, Projective2::identity());
    assert_relative_eq!(inv_t * proj, Projective2::identity());

#### `pub fn try_inverse_mut(&mut self) -> bool`[src]

Attempts to invert this transformation in-place. You may use `.inverse_mut` instead of this transformation has a subcategory of `TProjective`.

# Examples

    let m = Matrix3::new(2.0, 2.0, -0.3,
                         3.0, 4.0, 0.1,
                         0.0, 0.0, 1.0);
    let t = Transform2::from_matrix_unchecked(m);
    let mut inv_t = t;
    assert!(inv_t.try_inverse_mut());
    assert_relative_eq!(t * inv_t, Transform2::identity());
    assert_relative_eq!(inv_t * t, Transform2::identity());

    // Non-invertible case.
    let m = Matrix3::new(0.0, 2.0, 1.0,
                         3.0, 0.0, 5.0,
                         0.0, 0.0, 0.0);
    let mut t = Transform2::from_matrix_unchecked(m);
    assert!(!t.try_inverse_mut());

#### `pub fn inverse_mut(&mut self) where
C: SubTCategoryOf<TProjective>,` [src]

Inverts this transformation in-place. Use `.try_inverse_mut` if this transform has the `TGeneral` category (it may not be invertible).

# Examples

    let m = Matrix3::new(2.0, 2.0, -0.3,
                         3.0, 4.0, 0.1,
                         0.0, 0.0, 1.0);
    let proj = Projective2::from_matrix_unchecked(m);
    let mut inv_t = proj;
    inv_t.inverse_mut();
    assert_relative_eq!(proj * inv_t, Projective2::identity());
    assert_relative_eq!(inv_t * proj, Projective2::identity());

### `impl<N, D: DimNameAdd<U1>, C> Transform<N, D, C> where
N: RealField,
C: TCategory,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, D>,` [src]

#### `pub fn transform_point(&self, pt: &Point<N, D>) -> Point<N, D>`[src]

Transform the given point by this transformation.

This is the same as the multiplication `self * pt`.

#### `pub fn transform_vector(&self, v: &VectorN<N, D>) -> VectorN<N, D>`[src]

Transform the given vector by this transformation, ignoring the translational component of the transformation.

This is the same as the multiplication `self * v`.

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> Transform<N, D, C> where
C: SubTCategoryOf<TProjective>,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, D>,` [src]

#### `pub fn inverse_transform_point(&self, pt: &Point<N, D>) -> Point<N, D>`[src]

Transform the given point by the inverse of this transformation. This may be cheaper than inverting the transformation and transforming the point.

#### `pub fn inverse_transform_vector(&self, v: &VectorN<N, D>) -> VectorN<N, D>`[src]

Transform the given vector by the inverse of this transformation. This may be cheaper than inverting the transformation and transforming the vector.

### `impl<N: RealField, D: DimNameAdd<U1>> Transform<N, D, TGeneral> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `pub fn matrix_mut(&mut self) -> &mut MatrixN<N, DimNameSum<D, U1>>`[src]

A mutable reference to underlying matrix. Use `.matrix_mut_unchecked` instead if this transformation category is not `TGeneral`.

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> Transform<N, D, C> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `pub fn identity() -> Self`[src]

Creates a new identity transform.

# Example

    let pt = Point2::new(1.0, 2.0);
    let t = Projective2::identity();
    assert_eq!(t * pt, pt);

    let aff = Affine2::identity();
    assert_eq!(aff * pt, pt);

    let aff = Transform2::identity();
    assert_eq!(aff * pt, pt);

    // Also works in 3D.
    let pt = Point3::new(1.0, 2.0, 3.0);
    let t = Projective3::identity();
    assert_eq!(t * pt, pt);

    let aff = Affine3::identity();
    assert_eq!(aff * pt, pt);

    let aff = Transform3::identity();
    assert_eq!(aff * pt, pt);

## Trait Implementations

### `impl<N: RealField + Eq, D: DimNameAdd<U1>, C: TCategory> Eq for Transform<N, D, C> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> Clone for Transform<N, D, C> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn clone(&self) -> Self`[src]

Returns a copy of the value. Read more

#### `fn clone_from(&mut self, source: &Self)`1.0.0[src]

Performs copy-assignment from `source`. Read more

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> PartialEq<Transform<N, D, C>> for Transform<N, D, C> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn eq(&self, right: &Self) -> bool`[src]

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

#### `#[must_use] fn ne(&self, other: &Rhs) -> bool` 1.0.0[src]

This method tests for `!=`.

### `impl<N: RealField, D: DimName, C> From<Transform<N, D, C>> for MatrixN<N, DimNameSum<D, U1>> where
D: DimNameAdd<U1>,
C: TCategory,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn from(t: Transform<N, D, C>) -> Self`[src]

Performs the conversion.

### `impl<N: RealField, D: DimNameAdd<U1> + Copy, C: TCategory> Copy for Transform<N, D, C> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,
Owned<N, DimNameSum<D, U1>, DimNameSum<D, U1>>: Copy,` [src]

### `impl<N, D: DimNameAdd<U1>, C: TCategory> Mul<Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = VectorN<N, D>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: VectorN<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategory> Mul<Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = VectorN<N, D>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: VectorN<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategory> Mul<&'b Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = VectorN<N, D>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b VectorN<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategory> Mul<&'b Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = VectorN<N, D>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b VectorN<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategory> Mul<Point<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,
DefaultAllocator: Allocator<N, D, D>,` [src]

#### `type Output = Point<N, D>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Point<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategory> Mul<Point<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,
DefaultAllocator: Allocator<N, D, D>,` [src]

#### `type Output = Point<N, D>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Point<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategory> Mul<&'b Point<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,
DefaultAllocator: Allocator<N, D, D>,` [src]

#### `type Output = Point<N, D>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Point<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategory> Mul<&'b Point<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,
DefaultAllocator: Allocator<N, D, D>,` [src]

#### `type Output = Point<N, D>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Point<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, CA: TCategoryMul<CB>, CB: TCategory> Mul<Transform<N, D, CB>> for Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, CA::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, CB>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, CA: TCategoryMul<CB>, CB: TCategory> Mul<Transform<N, D, CB>> for &'a Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, CA::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, CB>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, CA: TCategoryMul<CB>, CB: TCategory> Mul<&'b Transform<N, D, CB>> for Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, CA::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, CB>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, CA: TCategoryMul<CB>, CB: TCategory> Mul<&'b Transform<N, D, CB>> for &'a Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, CA::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, CB>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Rotation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Rotation<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Rotation<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Rotation<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Rotation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Rotation<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Rotation<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Rotation<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Transform<N, D, C>> for Rotation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Transform<N, D, C>> for &'a Rotation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, D, C>> for Rotation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, D, C>> for &'a Rotation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, C: TCategoryMul<TAffine>> Mul<Unit<Quaternion<N>>> for Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: UnitQuaternion<N>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, C: TCategoryMul<TAffine>> Mul<Unit<Quaternion<N>>> for &'a Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: UnitQuaternion<N>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, C: TCategoryMul<TAffine>> Mul<&'b Unit<Quaternion<N>>> for Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b UnitQuaternion<N>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, C: TCategoryMul<TAffine>> Mul<&'b Unit<Quaternion<N>>> for &'a Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b UnitQuaternion<N>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, C: TCategoryMul<TAffine>> Mul<Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, U3, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, C: TCategoryMul<TAffine>> Mul<Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, U3, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, U3, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, U3, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<Isometry<N, D, R>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Isometry<N, D, R>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<Isometry<N, D, R>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Isometry<N, D, R>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<&'b Isometry<N, D, R>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Isometry<N, D, R>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<&'b Isometry<N, D, R>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Isometry<N, D, R>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<Transform<N, D, C>> for Isometry<N, D, R> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<Transform<N, D, C>> for &'a Isometry<N, D, R> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<&'b Transform<N, D, C>> for Isometry<N, D, R> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<&'b Transform<N, D, C>> for &'a Isometry<N, D, R> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<Similarity<N, D, R>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Similarity<N, D, R>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<Similarity<N, D, R>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Similarity<N, D, R>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<&'b Similarity<N, D, R>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Similarity<N, D, R>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<&'b Similarity<N, D, R>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Similarity<N, D, R>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<Transform<N, D, C>> for Similarity<N, D, R> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<Transform<N, D, C>> for &'a Similarity<N, D, R> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<&'b Transform<N, D, C>> for Similarity<N, D, R> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> Mul<&'b Transform<N, D, C>> for &'a Similarity<N, D, R> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Translation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Translation<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Translation<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Translation<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Translation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Translation<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Translation<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Translation<N, D>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Transform<N, D, C>> for Translation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Transform<N, D, C>> for &'a Translation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, D, C>> for Translation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, D, C>> for &'a Translation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `*` operator.

#### `fn mul(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `*` operation.

### `impl<N, D: DimNameAdd<U1>, CA: TCategoryMul<CB>, CB: SubTCategoryOf<TProjective>> Div<Transform<N, D, CB>> for Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, CA::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Transform<N, D, CB>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, N, D: DimNameAdd<U1>, CA: TCategoryMul<CB>, CB: SubTCategoryOf<TProjective>> Div<Transform<N, D, CB>> for &'a Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, CA::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Transform<N, D, CB>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'b, N, D: DimNameAdd<U1>, CA: TCategoryMul<CB>, CB: SubTCategoryOf<TProjective>> Div<&'b Transform<N, D, CB>> for Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, CA::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Transform<N, D, CB>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, CA: TCategoryMul<CB>, CB: SubTCategoryOf<TProjective>> Div<&'b Transform<N, D, CB>> for &'a Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, CA::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Transform<N, D, CB>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Rotation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Rotation<N, D>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Rotation<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Rotation<N, D>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Rotation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Rotation<N, D>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Rotation<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Rotation<N, D>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Transform<N, D, C>> for Rotation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Transform<N, D, C>> for &'a Rotation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Transform<N, D, C>> for Rotation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Transform<N, D, C>> for &'a Rotation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<N, C: TCategoryMul<TAffine>> Div<Unit<Quaternion<N>>> for Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: UnitQuaternion<N>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, N, C: TCategoryMul<TAffine>> Div<Unit<Quaternion<N>>> for &'a Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: UnitQuaternion<N>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'b, N, C: TCategoryMul<TAffine>> Div<&'b Unit<Quaternion<N>>> for Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b UnitQuaternion<N>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, 'b, N, C: TCategoryMul<TAffine>> Div<&'b Unit<Quaternion<N>>> for &'a Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b UnitQuaternion<N>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<N, C: TCategoryMul<TAffine>> Div<Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Transform<N, U3, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, N, C: TCategoryMul<TAffine>> Div<Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Transform<N, U3, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'b, N, C: TCategoryMul<TAffine>> Div<&'b Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Transform<N, U3, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, 'b, N, C: TCategoryMul<TAffine>> Div<&'b Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,` [src]

#### `type Output = Transform<N, U3, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Transform<N, U3, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Translation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Translation<N, D>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Translation<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Translation<N, D>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Translation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Translation<N, D>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Translation<N, D>> for &'a Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, U1>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Translation<N, D>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Transform<N, D, C>> for Translation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Transform<N, D, C>> for &'a Translation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: Transform<N, D, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Transform<N, D, C>> for Translation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Transform<N, D, C>> for &'a Translation<N, D> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, D, U1> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>,` [src]

#### `type Output = Transform<N, D, C::Representative>`

The resulting type after applying the `/` operator.

#### `fn div(self, rhs: &'b Transform<N, D, C>) -> Self::Output`[src]

Performs the `/` operation.

### `impl<N, D: DimNameAdd<U1>, CA: TCategory, CB: SubTCategoryOf<CA>> MulAssign<Transform<N, D, CB>> for Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn mul_assign(&mut self, rhs: Transform<N, D, CB>)`[src]

Performs the `*=` operation.

### `impl<'b, N, D: DimNameAdd<U1>, CA: TCategory, CB: SubTCategoryOf<CA>> MulAssign<&'b Transform<N, D, CB>> for Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn mul_assign(&mut self, rhs: &'b Transform<N, D, CB>)`[src]

Performs the `*=` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategory, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> MulAssign<Similarity<N, D, R>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1>,` [src]

#### `fn mul_assign(&mut self, rhs: Similarity<N, D, R>)`[src]

Performs the `*=` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategory, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> MulAssign<&'b Similarity<N, D, R>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1>,` [src]

#### `fn mul_assign(&mut self, rhs: &'b Similarity<N, D, R>)`[src]

Performs the `*=` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategory, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> MulAssign<Isometry<N, D, R>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1>,` [src]

#### `fn mul_assign(&mut self, rhs: Isometry<N, D, R>)`[src]

Performs the `*=` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategory, R: SubsetOf<MatrixN<N, DimNameSum<D, U1>>>> MulAssign<&'b Isometry<N, D, R>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1>,` [src]

#### `fn mul_assign(&mut self, rhs: &'b Isometry<N, D, R>)`[src]

Performs the `*=` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategory> MulAssign<Translation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1>,` [src]

#### `fn mul_assign(&mut self, rhs: Translation<N, D>)`[src]

Performs the `*=` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategory> MulAssign<&'b Translation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1>,` [src]

#### `fn mul_assign(&mut self, rhs: &'b Translation<N, D>)`[src]

Performs the `*=` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategory> MulAssign<Rotation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D>,` [src]

#### `fn mul_assign(&mut self, rhs: Rotation<N, D>)`[src]

Performs the `*=` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategory> MulAssign<&'b Rotation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D>,` [src]

#### `fn mul_assign(&mut self, rhs: &'b Rotation<N, D>)`[src]

Performs the `*=` operation.

### `impl<N, C: TCategory> MulAssign<Unit<Quaternion<N>>> for Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `fn mul_assign(&mut self, rhs: UnitQuaternion<N>)`[src]

Performs the `*=` operation.

### `impl<'b, N, C: TCategory> MulAssign<&'b Unit<Quaternion<N>>> for Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `fn mul_assign(&mut self, rhs: &'b UnitQuaternion<N>)`[src]

Performs the `*=` operation.

### `impl<N, D: DimNameAdd<U1>, CA: SuperTCategoryOf<CB>, CB: SubTCategoryOf<TProjective>> DivAssign<Transform<N, D, CB>> for Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn div_assign(&mut self, rhs: Transform<N, D, CB>)`[src]

Performs the `/=` operation.

### `impl<'b, N, D: DimNameAdd<U1>, CA: SuperTCategoryOf<CB>, CB: SubTCategoryOf<TProjective>> DivAssign<&'b Transform<N, D, CB>> for Transform<N, D, CA> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn div_assign(&mut self, rhs: &'b Transform<N, D, CB>)`[src]

Performs the `/=` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategory> DivAssign<Translation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1>,` [src]

#### `fn div_assign(&mut self, rhs: Translation<N, D>)`[src]

Performs the `/=` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategory> DivAssign<&'b Translation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, U1>,` [src]

#### `fn div_assign(&mut self, rhs: &'b Translation<N, D>)`[src]

Performs the `/=` operation.

### `impl<N, D: DimNameAdd<U1>, C: TCategory> DivAssign<Rotation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D>,` [src]

#### `fn div_assign(&mut self, rhs: Rotation<N, D>)`[src]

Performs the `/=` operation.

### `impl<'b, N, D: DimNameAdd<U1>, C: TCategory> DivAssign<&'b Rotation<N, D>> for Transform<N, D, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D>,` [src]

#### `fn div_assign(&mut self, rhs: &'b Rotation<N, D>)`[src]

Performs the `/=` operation.

### `impl<N, C: TCategory> DivAssign<Unit<Quaternion<N>>> for Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `fn div_assign(&mut self, rhs: UnitQuaternion<N>)`[src]

Performs the `/=` operation.

### `impl<'b, N, C: TCategory> DivAssign<&'b Unit<Quaternion<N>>> for Transform<N, U3, C> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U4> + Allocator<N, U4, U1>,` [src]

#### `fn div_assign(&mut self, rhs: &'b UnitQuaternion<N>)`[src]

Performs the `/=` operation.

### `impl<N: RealField, D, C: TCategory> Index<(usize, usize)> for Transform<N, D, C> where
D: DimName + DimNameAdd<U1>,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Output = N`

The returned type after indexing.

#### `fn index(&self, ij: (usize, usize)) -> &N`[src]

Performs the indexing (`container[index]`) operation.

### `impl<N: RealField, D> IndexMut<(usize, usize)> for Transform<N, D, TGeneral> where
D: DimName + DimNameAdd<U1>,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn index_mut(&mut self, ij: (usize, usize)) -> &mut N`[src]

Performs the mutable indexing (`container[index]`) operation.

### `impl<N: Debug + RealField, D: Debug + DimNameAdd<U1>, C: Debug + TCategory> Debug for Transform<N, D, C> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn fmt(&self, f: &mut Formatter) -> Result`[src]

Formats the value using the given formatter. Read more

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> AbsDiffEq<Transform<N, D, C>> for Transform<N, D, C> where
N::Epsilon: Copy,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `type Epsilon = N::Epsilon`

Used for specifying relative comparisons.

#### `fn default_epsilon() -> Self::Epsilon`[src]

The default tolerance to use when testing values that are close together. Read more

#### `fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool`[src]

A test for equality that uses the absolute difference to compute the approximate equality of two numbers. Read more

#### `fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool`[src]

The inverse of `ApproxEq::abs_diff_eq`.

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> RelativeEq<Transform<N, D, C>> for Transform<N, D, C> where
N::Epsilon: Copy,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn default_max_relative() -> Self::Epsilon`[src]

The default relative tolerance for testing values that are far-apart. Read more

#### `fn relative_eq(
&self,
other: &Self,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool`[src]

A test for equality that uses a relative comparison if the values are far apart.

#### `fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool`[src]

The inverse of `ApproxEq::relative_eq`.

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> UlpsEq<Transform<N, D, C>> for Transform<N, D, C> where
N::Epsilon: Copy,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn default_max_ulps() -> u32`[src]

The default ULPs to tolerate when testing values that are far-apart. Read more

#### `fn ulps_eq(&self, other: &Self, epsilon: Self::Epsilon, max_ulps: u32) -> bool`[src]

A test for equality that uses units in the last place (ULP) if the values are far apart.

#### `fn ulps_ne(&self, other: &Rhs, epsilon: Self::Epsilon, max_ulps: u32) -> bool`[src]

The inverse of `ApproxEq::ulps_eq`.

### `impl<N: RealField, D: DimNameAdd<U1>, C: TCategory> One for Transform<N, D, C> where
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn one() -> Self`[src]

Creates a new identity transform.

#### `fn set_one(&mut self)`[src]

Sets `self` to the multiplicative identity element of `Self`, `1`.

#### `fn is_one(&self) -> bool where
Self: PartialEq<Self>,` [src]

Returns `true` if `self` is equal to the multiplicative identity. Read more

### `impl<N: RealField, D: DimNameAdd<U1>, C> AbstractMagma<Multiplicative> for Transform<N, D, C> where
C: TCategory,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn operate(&self, rhs: &Self) -> Self`[src]

Performs an operation.

#### `fn op(&self, O, lhs: &Self) -> Self`[src]

Performs specific operation.

### `impl<N: RealField, D: DimNameAdd<U1>, C> AbstractQuasigroup<Multiplicative> for Transform<N, D, C> where
C: SubTCategoryOf<TProjective>,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
Self: RelativeEq<Self>,` [src]

Returns `true` if latin squareness holds for the given arguments. Approximate equality is used for verifications. Read more

#### `fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
Self: Eq,` [src]

Returns `true` if latin squareness holds for the given arguments. Read more

### `impl<N: RealField, D: DimNameAdd<U1>, C> AbstractSemigroup<Multiplicative> for Transform<N, D, C> where
C: TCategory,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn prop_is_associative_approx(args: (Self, Self, Self)) -> bool where
Self: RelativeEq<Self>,` [src]

Returns `true` if associativity holds for the given arguments. Approximate equality is used for verifications. Read more

#### `fn prop_is_associative(args: (Self, Self, Self)) -> bool where
Self: Eq,` [src]

Returns `true` if associativity holds for the given arguments.

### `impl<N: RealField, D: DimNameAdd<U1>, C> AbstractLoop<Multiplicative> for Transform<N, D, C> where
C: SubTCategoryOf<TProjective>,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

### `impl<N: RealField, D: DimNameAdd<U1>, C> AbstractMonoid<Multiplicative> for Transform<N, D, C> where
C: TCategory,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn prop_operating_identity_element_is_noop_approx(args: (Self,)) -> bool where
Self: RelativeEq<Self>,` [src]

Checks whether operating with the identity element is a no-op for the given argument. Approximate equality is used for verifications. Read more

#### `fn prop_operating_identity_element_is_noop(args: (Self,)) -> bool where
Self: Eq,` [src]

Checks whether operating with the identity element is a no-op for the given argument. Read more

### `impl<N: RealField, D: DimNameAdd<U1>, C> AbstractGroup<Multiplicative> for Transform<N, D, C> where
C: SubTCategoryOf<TProjective>,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

### `impl<N: RealField, D: DimNameAdd<U1>, C> Identity<Multiplicative> for Transform<N, D, C> where
C: TCategory,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn identity() -> Self`[src]

The identity element.

#### `fn id(O) -> Self`[src]

Specific identity.

### `impl<N: RealField, D: DimNameAdd<U1>, C> TwoSidedInverse<Multiplicative> for Transform<N, D, C> where
C: SubTCategoryOf<TProjective>,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn two_sided_inverse(&self) -> Self`[src]

Returns the two_sided_inverse of `self`, relative to the operator `O`. Read more

#### `fn two_sided_inverse_mut(&mut self)`[src]

In-place inversion of `self`, relative to the operator `O`. Read more

### `impl<N1, N2, D, C> SubsetOf<Transform<N2, D, C>> for Rotation<N1, D> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
C: SuperTCategoryOf<TAffine>,
D: DimNameAdd<U1> + DimMin<D, Output = D>,
DefaultAllocator: Allocator<N1, D, D> + Allocator<N2, D, D> + Allocator<N1, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N2, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<(usize, usize), D>,` [src]

#### `fn to_superset(&self) -> Transform<N2, D, C>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `fn is_in_subset(t: &Transform<N2, D, C>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `unsafe fn from_superset_unchecked(t: &Transform<N2, D, C>) -> Self`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn from_superset(element: &T) -> Option<Self>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

### `impl<N1, N2, C> SubsetOf<Transform<N2, U3, C>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
C: SuperTCategoryOf<TAffine>,` [src]

#### `fn to_superset(&self) -> Transform<N2, U3, C>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `fn is_in_subset(t: &Transform<N2, U3, C>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `unsafe fn from_superset_unchecked(t: &Transform<N2, U3, C>) -> Self`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn from_superset(element: &T) -> Option<Self>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

### `impl<N1, N2, C> SubsetOf<Transform<N2, U2, C>> for UnitComplex<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
C: SuperTCategoryOf<TAffine>,` [src]

#### `fn to_superset(&self) -> Transform<N2, U2, C>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `fn is_in_subset(t: &Transform<N2, U2, C>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `unsafe fn from_superset_unchecked(t: &Transform<N2, U2, C>) -> Self`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn from_superset(element: &T) -> Option<Self>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

### `impl<N1, N2, D, C> SubsetOf<Transform<N2, D, C>> for Translation<N1, D> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
C: SuperTCategoryOf<TAffine>,
D: DimNameAdd<U1>,
DefaultAllocator: Allocator<N1, D> + Allocator<N2, D> + Allocator<N1, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N2, DimNameSum<D, U1>, DimNameSum<D, U1>>,` [src]

#### `fn to_superset(&self) -> Transform<N2, D, C>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `fn is_in_subset(t: &Transform<N2, D, C>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `unsafe fn from_superset_unchecked(t: &Transform<N2, D, C>) -> Self`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn from_superset(element: &T) -> Option<Self>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

### `impl<N1, N2, D, R, C> SubsetOf<Transform<N2, D, C>> for Isometry<N1, D, R> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
C: SuperTCategoryOf<TAffine>,
R: Rotation<Point<N1, D>> + SubsetOf<MatrixN<N1, DimNameSum<D, U1>>> + SubsetOf<MatrixN<N2, DimNameSum<D, U1>>>,
D: DimNameAdd<U1> + DimMin<D, Output = D>,
DefaultAllocator: Allocator<N1, D> + Allocator<N1, D, D> + Allocator<N1, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N2, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<(usize, usize), D> + Allocator<N2, D, D> + Allocator<N2, D>,` [src]

#### `fn to_superset(&self) -> Transform<N2, D, C>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `fn is_in_subset(t: &Transform<N2, D, C>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `unsafe fn from_superset_unchecked(t: &Transform<N2, D, C>) -> Self`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn from_superset(element: &T) -> Option<Self>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

### `impl<N1, N2, D, R, C> SubsetOf<Transform<N2, D, C>> for Similarity<N1, D, R> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
C: SuperTCategoryOf<TAffine>,
R: Rotation<Point<N1, D>> + SubsetOf<MatrixN<N1, DimNameSum<D, U1>>> + SubsetOf<MatrixN<N2, DimNameSum<D, U1>>>,
D: DimNameAdd<U1> + DimMin<D, Output = D>,
DefaultAllocator: Allocator<N1, D> + Allocator<N1, D, D> + Allocator<N1, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N2, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<(usize, usize), D> + Allocator<N2, D, D> + Allocator<N2, D>,` [src]

#### `fn to_superset(&self) -> Transform<N2, D, C>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `fn is_in_subset(t: &Transform<N2, D, C>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `unsafe fn from_superset_unchecked(t: &Transform<N2, D, C>) -> Self`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn from_superset(element: &T) -> Option<Self>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

### `impl<N1, N2, D: DimName, C1, C2> SubsetOf<Transform<N2, D, C2>> for Transform<N1, D, C1> where
N1: RealField + SubsetOf<N2>,
N2: RealField,
C1: TCategory,
C2: SuperTCategoryOf<C1>,
D: DimNameAdd<U1>,
DefaultAllocator: Allocator<N1, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N2, DimNameSum<D, U1>, DimNameSum<D, U1>>,
N1::Epsilon: Copy,
N2::Epsilon: Copy,` [src]

#### `fn to_superset(&self) -> Transform<N2, D, C2>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `fn is_in_subset(t: &Transform<N2, D, C2>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `unsafe fn from_superset_unchecked(t: &Transform<N2, D, C2>) -> Self`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn from_superset(element: &T) -> Option<Self>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

### `impl<N1, N2, D: DimName, C> SubsetOf<Matrix<N2, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output, <DefaultAllocator as Allocator<N2, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output>>::Buffer>> for Transform<N1, D, C> where
N1: RealField + SubsetOf<N2>,
N2: RealField,
C: TCategory,
D: DimNameAdd<U1>,
DefaultAllocator: Allocator<N1, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N2, DimNameSum<D, U1>, DimNameSum<D, U1>>,
N1::Epsilon: Copy,
N2::Epsilon: Copy,` [src]

#### `fn to_superset(&self) -> MatrixN<N2, DimNameSum<D, U1>>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `fn is_in_subset(m: &MatrixN<N2, DimNameSum<D, U1>>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `unsafe fn from_superset_unchecked(m: &MatrixN<N2, DimNameSum<D, U1>>) -> Self`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn from_superset(element: &T) -> Option<Self>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

### `impl<N, D: DimNameAdd<U1>, C> ProjectiveTransformation<Point<N, D>> for Transform<N, D, C> where
N: RealField,
C: SubTCategoryOf<TProjective>,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, D>,` [src]

#### `fn inverse_transform_point(&self, pt: &Point<N, D>) -> Point<N, D>`[src]

Applies this group's two_sided_inverse action on a point from the euclidean space.

#### `fn inverse_transform_vector(&self, v: &VectorN<N, D>) -> VectorN<N, D>`[src]

Applies this group's two_sided_inverse action on a vector from the euclidean space. Read more

### `impl<N, D: DimNameAdd<U1>, C> Transformation<Point<N, D>> for Transform<N, D, C> where
N: RealField,
C: TCategory,
DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, D>,` [src]

#### `fn transform_point(&self, pt: &Point<N, D>) -> Point<N, D>`[src]

Applies this group's action on a point from the euclidean space.

#### `fn transform_vector(&self, v: &VectorN<N, D>) -> VectorN<N, D>`[src]

Applies this group's action on a vector from the euclidean space. Read more

## Auto Trait Implementations

### `impl<N, D, C> !Send for Transform<N, D, C>`

### `impl<N, D, C> !Unpin for Transform<N, D, C>`

### `impl<N, D, C> !Sync for Transform<N, D, C>`

### `impl<N, D, C> !UnwindSafe for Transform<N, D, C>`

### `impl<N, D, C> !RefUnwindSafe for Transform<N, D, C>`

## Blanket Implementations

### `impl<T> ToOwned for T where
T: Clone,` [src]

#### `type Owned = T`

The resulting type after obtaining ownership.

#### `fn to_owned(&self) -> T`[src]

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

#### `fn clone_into(&self, target: &mut T)`[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into`)

recently added

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

### `impl<T, U> Into<U> for T where
U: From<T>,` [src]

#### `fn into(self) -> U`[src]

Performs the conversion.

### `impl<T> From<T> for T`[src]

#### `fn from(t: T) -> T`[src]

Performs the conversion.

### `impl<T, U> TryFrom<U> for T where
U: Into<T>,` [src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

#### `fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`[src]

Performs the conversion.

### `impl<T, U> TryInto<U> for T where
U: TryFrom<T>,` [src]

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

The type returned in the event of a conversion error.

#### `fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`[src]

Performs the conversion.

### `impl<T> BorrowMut<T> for T where
T: ?Sized,` [src]

#### `fn borrow_mut(&mut self) -> &mut T`[src]

Mutably borrows from an owned value. Read more

### `impl<T> Borrow<T> for T where
T: ?Sized,` [src]

#### `fn borrow(&self) -> &T`[src]

Immutably borrows from an owned value. Read more

### `impl<T> Any for T where
T: 'static + ?Sized,` [src]

#### `fn type_id(&self) -> TypeId`[src]

Gets the `TypeId` of `self`. Read more

### `impl<T> Same<T> for T`[src]

#### `type Output = T`

Should always be `Self`

### `impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,` [src]

#### `fn to_subset(&self) -> Option<SS>`[src]

The inverse inclusion map: attempts to construct `self` from the equivalent element of its superset. Read more

#### `fn is_in_subset(&self) -> bool`[src]

Checks if `self` is actually part of its subset `T` (and can be converted to it).

#### `unsafe fn to_subset_unchecked(&self) -> SS`[src]

Use with care! Same as `self.to_subset` but without any property checks. Always succeeds.

#### `fn from_subset(element: &SS) -> SP`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

### `impl<T, Right> ClosedMul<Right> for T where
T: Mul<Right, Output = T> + MulAssign<Right>,` [src]

### `impl<T, Right> ClosedDiv<Right> for T where
T: Div<Right, Output = T> + DivAssign<Right>,` [src]

### `impl<T> MultiplicativeMagma for T where
T: AbstractMagma<Multiplicative>,` [src]

### `impl<T> MultiplicativeQuasigroup for T where
T: AbstractQuasigroup<Multiplicative> + ClosedDiv<T> + MultiplicativeMagma,` [src]

### `impl<T> MultiplicativeLoop for T where
T: AbstractLoop<Multiplicative> + MultiplicativeQuasigroup + One,` [src]

### `impl<T> MultiplicativeSemigroup for T where
T: AbstractSemigroup<Multiplicative> + ClosedMul<T> + MultiplicativeMagma,` [src]

### `impl<T> MultiplicativeMonoid for T where
T: AbstractMonoid<Multiplicative> + MultiplicativeSemigroup + One,` [src]

### `impl<T> MultiplicativeGroup for T where
T: AbstractGroup<Multiplicative> + MultiplicativeLoop + MultiplicativeMonoid,` [src]

### `impl<R, E> ProjectiveTransformation<E> for R where
E: EuclideanSpace<RealField = R>,
R: RealField,
<E as EuclideanSpace>::Coordinates: ClosedMul<R>,
<E as EuclideanSpace>::Coordinates: ClosedDiv<R>,
<E as EuclideanSpace>::Coordinates: ClosedNeg,` [src]

#### `fn inverse_transform_point(&self, pt: &E) -> E`[src]

Applies this group's two_sided_inverse action on a point from the euclidean space.

#### `fn inverse_transform_vector(
&self,
v: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates`[src]

Applies this group's two_sided_inverse action on a vector from the euclidean space. Read more

### `impl<R, E> Transformation<E> for R where
E: EuclideanSpace<RealField = R>,
R: RealField,
<E as EuclideanSpace>::Coordinates: ClosedMul<R>,
<E as EuclideanSpace>::Coordinates: ClosedDiv<R>,
<E as EuclideanSpace>::Coordinates: ClosedNeg,` [src]

#### `fn transform_point(&self, pt: &E) -> E`[src]

Applies this group's action on a point from the euclidean space.

#### `fn transform_vector(
&self,
v: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates`[src]

Applies this group's action on a vector from the euclidean space. Read more

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)