[][src]Trait vek::ops::Clamp

pub trait Clamp<Bound = Self>: Sized {
    fn clamped(self, lower: Bound, upper: Bound) -> Self;

    fn clamp(val: Self, lower: Bound, upper: Bound) -> Self { ... }
fn clamped01(self) -> Self
    where
        Bound: Zero + One
, { ... }
fn clamp01(val: Self) -> Self
    where
        Bound: Zero + One
, { ... }
fn clamped_minus1_1(self) -> Self
    where
        Bound: One + Neg<Output = Bound>
, { ... }
fn clamp_minus1_1(val: Self) -> Self
    where
        Bound: One + Neg<Output = Bound>
, { ... } }

A scalar or vector that can be constrained to be between two values (inclusive).

Required methods

fn clamped(self, lower: Bound, upper: Bound) -> Self

Constrains this value to be between lower and upper (inclusive).

This would rather make use of inclusive ranges, but it's an unstable feature.

Panics

Panics if lower is greater than upper. Swap the values yourself if necessary.

use vek::ops::Clamp;

assert_eq!(7.clamped(5, 10), 7);
assert_eq!(4.clamped(5, 10), 5);
assert_eq!(5.clamped(5, 10), 5);
assert_eq!(10.clamped(5, 10), 10);
assert_eq!(11.clamped(5, 10), 10);
Loading content...

Provided methods

fn clamp(val: Self, lower: Bound, upper: Bound) -> Self

Alias to clamped, which doesn't take self.

Panics

Panics if lower is greater than upper. Swap the values yourself if necessary.

fn clamped01(self) -> Self where
    Bound: Zero + One

Constrains this value to be between 0 and 1 (inclusive).

fn clamp01(val: Self) -> Self where
    Bound: Zero + One

Alias to clamped01, which doesn't take self.

fn clamped_minus1_1(self) -> Self where
    Bound: One + Neg<Output = Bound>, 

Constrains this value to be between -1 and 1 (inclusive).

fn clamp_minus1_1(val: Self) -> Self where
    Bound: One + Neg<Output = Bound>, 

Alias to clamped_minus1_1, which doesn't take self.

Loading content...

Implementations on Foreign Types

impl Clamp<f32> for f32[src]

impl Clamp<f64> for f64[src]

impl Clamp<i8> for i8[src]

impl Clamp<i16> for i16[src]

impl Clamp<i32> for i32[src]

impl Clamp<i64> for i64[src]

impl Clamp<isize> for isize[src]

impl Clamp<u8> for u8[src]

impl Clamp<u16> for u16[src]

impl Clamp<u32> for u32[src]

impl Clamp<u64> for u64[src]

impl Clamp<usize> for usize[src]

impl Clamp<Wrapping<i8>> for Wrapping<i8>[src]

impl Clamp<Wrapping<i16>> for Wrapping<i16>[src]

impl Clamp<Wrapping<i32>> for Wrapping<i32>[src]

impl Clamp<Wrapping<i64>> for Wrapping<i64>[src]

impl Clamp<Wrapping<isize>> for Wrapping<isize>[src]

impl Clamp<Wrapping<u8>> for Wrapping<u8>[src]

impl Clamp<Wrapping<u16>> for Wrapping<u16>[src]

impl Clamp<Wrapping<u32>> for Wrapping<u32>[src]

impl Clamp<Wrapping<u64>> for Wrapping<u64>[src]

impl Clamp<Wrapping<usize>> for Wrapping<usize>[src]

Loading content...

Implementors

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_c::extent2::Extent2<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_c::extent3::Extent3<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_c::rgb::Rgb<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_c::rgba::Rgba<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_c::vec2::Vec2<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_c::vec3::Vec3<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_c::vec4::Vec4<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_simd::extent2::Extent2<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_simd::extent3::Extent3<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_simd::rgb::Rgb<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_simd::rgba::Rgba<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_simd::vec2::Vec2<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_simd::vec3::Vec3<T>[src]

impl<T: Clamp + Copy> Clamp<T> for vek::vec::repr_simd::vec4::Vec4<T>[src]

impl<T: Clamp> Clamp<Extent2<T>> for vek::vec::repr_c::extent2::Extent2<T>[src]

impl<T: Clamp> Clamp<Extent3<T>> for vek::vec::repr_c::extent3::Extent3<T>[src]

impl<T: Clamp> Clamp<Rgb<T>> for vek::vec::repr_c::rgb::Rgb<T>[src]

impl<T: Clamp> Clamp<Rgba<T>> for vek::vec::repr_c::rgba::Rgba<T>[src]

impl<T: Clamp> Clamp<Vec2<T>> for vek::vec::repr_c::vec2::Vec2<T>[src]

impl<T: Clamp> Clamp<Vec3<T>> for vek::vec::repr_c::vec3::Vec3<T>[src]

impl<T: Clamp> Clamp<Vec4<T>> for vek::vec::repr_c::vec4::Vec4<T>[src]

impl<T: Clamp> Clamp<Extent2<T>> for vek::vec::repr_simd::extent2::Extent2<T>[src]

impl<T: Clamp> Clamp<Extent3<T>> for vek::vec::repr_simd::extent3::Extent3<T>[src]

impl<T: Clamp> Clamp<Rgb<T>> for vek::vec::repr_simd::rgb::Rgb<T>[src]

impl<T: Clamp> Clamp<Rgba<T>> for vek::vec::repr_simd::rgba::Rgba<T>[src]

impl<T: Clamp> Clamp<Vec2<T>> for vek::vec::repr_simd::vec2::Vec2<T>[src]

impl<T: Clamp> Clamp<Vec3<T>> for vek::vec::repr_simd::vec3::Vec3<T>[src]

impl<T: Clamp> Clamp<Vec4<T>> for vek::vec::repr_simd::vec4::Vec4<T>[src]

Loading content...