CastRangeFrom

Trait CastRangeFrom 

Source
pub trait CastRangeFrom<T> {
    // Required method
    fn cast_range_from(value: T) -> Self;
}
Expand description

Remap the value RangeDefault to the RangeDefault of the target type, in a generic friendly way, and similar to the From trait.

[Self::RANGE_MIN..Self::RANGE_MAX] => [T::RANGE_MIN..T::RANGE_MAX]

One should always prefer implementing CastRangeFrom over CastRangeInto because implementing CastRangeFrom automatically provides one with an implementation of CastRangeInto thanks to the blanket implementation in the hexga_math library.

use hexga_math::prelude::*;

assert_eq!(u8::cast_range_from(1f32), 255u8);
assert_eq!(u8::cast_range_from(0f32), 0u8);

let casted_range : u16 = u8::MAX.cast_range_into();
assert_eq!(casted_range, u16::MAX);

Also work with composite like std::array, Vector

use hexga_math::prelude::*;

let x = [0u8, 127u8, 255u8];
let y : [u16; 3] = x.cast_range_into(),
assert_eq!(y, [0u16, 32639u16, 65535u16]);


let a = vector3(0u8, 127u8, 255u8);
let b : Vector3::<u16> = a.cast_into(),
assert_eq!(b, vector3(0u16, u16::MAX / 2 - u8::RANGE_MAX as u16 / 2 - 1, u16::MAX));

Required Methods§

Source

fn cast_range_from(value: T) -> Self

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl CastRangeFrom<bool> for bool

Source§

fn cast_range_from(value: bool) -> Self

Source§

impl CastRangeFrom<bool> for f32

Source§

impl CastRangeFrom<bool> for f64

Source§

impl CastRangeFrom<bool> for i8

Source§

impl CastRangeFrom<bool> for i16

Source§

impl CastRangeFrom<bool> for i32

Source§

impl CastRangeFrom<bool> for i64

Source§

impl CastRangeFrom<bool> for isize

Source§

impl CastRangeFrom<bool> for u8

Source§

impl CastRangeFrom<bool> for u16

Source§

impl CastRangeFrom<bool> for u32

Source§

impl CastRangeFrom<bool> for u64

Source§

impl CastRangeFrom<bool> for usize

Source§

impl CastRangeFrom<f32> for bool

Source§

impl CastRangeFrom<f32> for f32

Source§

impl CastRangeFrom<f32> for f64

Source§

impl CastRangeFrom<f32> for i8

Source§

impl CastRangeFrom<f32> for i16

Source§

impl CastRangeFrom<f32> for i32

Source§

impl CastRangeFrom<f32> for i64

Source§

impl CastRangeFrom<f32> for isize

Source§

impl CastRangeFrom<f32> for u8

Source§

impl CastRangeFrom<f32> for u16

Source§

impl CastRangeFrom<f32> for u32

Source§

impl CastRangeFrom<f32> for u64

Source§

impl CastRangeFrom<f32> for usize

Source§

impl CastRangeFrom<f64> for bool

Source§

impl CastRangeFrom<f64> for f32

Source§

impl CastRangeFrom<f64> for f64

Source§

impl CastRangeFrom<f64> for i8

Source§

impl CastRangeFrom<f64> for i16

Source§

impl CastRangeFrom<f64> for i32

Source§

impl CastRangeFrom<f64> for i64

Source§

impl CastRangeFrom<f64> for isize

Source§

impl CastRangeFrom<f64> for u8

Source§

impl CastRangeFrom<f64> for u16

Source§

impl CastRangeFrom<f64> for u32

Source§

impl CastRangeFrom<f64> for u64

Source§

impl CastRangeFrom<f64> for usize

Source§

impl CastRangeFrom<i8> for bool

Source§

impl CastRangeFrom<i8> for f32

Source§

impl CastRangeFrom<i8> for f64

Source§

impl CastRangeFrom<i8> for i8

Source§

impl CastRangeFrom<i8> for i16

Source§

impl CastRangeFrom<i8> for i32

Source§

impl CastRangeFrom<i8> for i64

Source§

impl CastRangeFrom<i8> for isize

Source§

impl CastRangeFrom<i8> for u8

Source§

impl CastRangeFrom<i8> for u16

Source§

impl CastRangeFrom<i8> for u32

Source§

impl CastRangeFrom<i8> for u64

Source§

impl CastRangeFrom<i8> for usize

Source§

impl CastRangeFrom<i16> for bool

Source§

impl CastRangeFrom<i16> for f32

Source§

impl CastRangeFrom<i16> for f64

Source§

impl CastRangeFrom<i16> for i8

Source§

impl CastRangeFrom<i16> for i16

Source§

impl CastRangeFrom<i16> for i32

Source§

impl CastRangeFrom<i16> for i64

Source§

impl CastRangeFrom<i16> for isize

Source§

impl CastRangeFrom<i16> for u8

Source§

impl CastRangeFrom<i16> for u16

Source§

impl CastRangeFrom<i16> for u32

Source§

impl CastRangeFrom<i16> for u64

Source§

impl CastRangeFrom<i16> for usize

Source§

impl CastRangeFrom<i32> for bool

Source§

impl CastRangeFrom<i32> for f32

Source§

impl CastRangeFrom<i32> for f64

Source§

impl CastRangeFrom<i32> for i8

Source§

impl CastRangeFrom<i32> for i16

Source§

impl CastRangeFrom<i32> for i32

Source§

impl CastRangeFrom<i32> for i64

Source§

impl CastRangeFrom<i32> for isize

Source§

impl CastRangeFrom<i32> for u8

Source§

impl CastRangeFrom<i32> for u16

Source§

impl CastRangeFrom<i32> for u32

Source§

impl CastRangeFrom<i32> for u64

Source§

impl CastRangeFrom<i32> for usize

Source§

impl CastRangeFrom<i64> for bool

Source§

impl CastRangeFrom<i64> for f32

Source§

impl CastRangeFrom<i64> for f64

Source§

impl CastRangeFrom<i64> for i8

Source§

impl CastRangeFrom<i64> for i16

Source§

impl CastRangeFrom<i64> for i32

Source§

impl CastRangeFrom<i64> for i64

Source§

impl CastRangeFrom<i64> for isize

Source§

impl CastRangeFrom<i64> for u8

Source§

impl CastRangeFrom<i64> for u16

Source§

impl CastRangeFrom<i64> for u32

Source§

impl CastRangeFrom<i64> for u64

Source§

impl CastRangeFrom<i64> for usize

Source§

impl CastRangeFrom<isize> for bool

Source§

impl CastRangeFrom<isize> for f32

Source§

impl CastRangeFrom<isize> for f64

Source§

impl CastRangeFrom<isize> for i8

Source§

impl CastRangeFrom<isize> for i16

Source§

impl CastRangeFrom<isize> for i32

Source§

impl CastRangeFrom<isize> for i64

Source§

impl CastRangeFrom<isize> for isize

Source§

impl CastRangeFrom<isize> for u8

Source§

impl CastRangeFrom<isize> for u16

Source§

impl CastRangeFrom<isize> for u32

Source§

impl CastRangeFrom<isize> for u64

Source§

impl CastRangeFrom<isize> for usize

Source§

impl CastRangeFrom<u8> for bool

Source§

impl CastRangeFrom<u8> for f32

Source§

impl CastRangeFrom<u8> for f64

Source§

impl CastRangeFrom<u8> for i8

Source§

impl CastRangeFrom<u8> for i16

Source§

impl CastRangeFrom<u8> for i32

Source§

impl CastRangeFrom<u8> for i64

Source§

impl CastRangeFrom<u8> for isize

Source§

impl CastRangeFrom<u8> for u8

Source§

impl CastRangeFrom<u8> for u16

Source§

impl CastRangeFrom<u8> for u32

Source§

impl CastRangeFrom<u8> for u64

Source§

impl CastRangeFrom<u8> for usize

Source§

impl CastRangeFrom<u16> for bool

Source§

impl CastRangeFrom<u16> for f32

Source§

impl CastRangeFrom<u16> for f64

Source§

impl CastRangeFrom<u16> for i8

Source§

impl CastRangeFrom<u16> for i16

Source§

impl CastRangeFrom<u16> for i32

Source§

impl CastRangeFrom<u16> for i64

Source§

impl CastRangeFrom<u16> for isize

Source§

impl CastRangeFrom<u16> for u8

Source§

impl CastRangeFrom<u16> for u16

Source§

impl CastRangeFrom<u16> for u32

Source§

impl CastRangeFrom<u16> for u64

Source§

impl CastRangeFrom<u16> for usize

Source§

impl CastRangeFrom<u32> for bool

Source§

impl CastRangeFrom<u32> for f32

Source§

impl CastRangeFrom<u32> for f64

Source§

impl CastRangeFrom<u32> for i8

Source§

impl CastRangeFrom<u32> for i16

Source§

impl CastRangeFrom<u32> for i32

Source§

impl CastRangeFrom<u32> for i64

Source§

impl CastRangeFrom<u32> for isize

Source§

impl CastRangeFrom<u32> for u8

Source§

impl CastRangeFrom<u32> for u16

Source§

impl CastRangeFrom<u32> for u32

Source§

impl CastRangeFrom<u32> for u64

Source§

impl CastRangeFrom<u32> for usize

Source§

impl CastRangeFrom<u64> for bool

Source§

impl CastRangeFrom<u64> for f32

Source§

impl CastRangeFrom<u64> for f64

Source§

impl CastRangeFrom<u64> for i8

Source§

impl CastRangeFrom<u64> for i16

Source§

impl CastRangeFrom<u64> for i32

Source§

impl CastRangeFrom<u64> for i64

Source§

impl CastRangeFrom<u64> for isize

Source§

impl CastRangeFrom<u64> for u8

Source§

impl CastRangeFrom<u64> for u16

Source§

impl CastRangeFrom<u64> for u32

Source§

impl CastRangeFrom<u64> for u64

Source§

impl CastRangeFrom<u64> for usize

Source§

impl CastRangeFrom<usize> for bool

Source§

impl CastRangeFrom<usize> for f32

Source§

impl CastRangeFrom<usize> for f64

Source§

impl CastRangeFrom<usize> for i8

Source§

impl CastRangeFrom<usize> for i16

Source§

impl CastRangeFrom<usize> for i32

Source§

impl CastRangeFrom<usize> for i64

Source§

impl CastRangeFrom<usize> for isize

Source§

impl CastRangeFrom<usize> for u8

Source§

impl CastRangeFrom<usize> for u16

Source§

impl CastRangeFrom<usize> for u32

Source§

impl CastRangeFrom<usize> for u64

Source§

impl CastRangeFrom<usize> for usize

Implementors§

Source§

impl<C1, C2> CastRangeFrom<C2> for C1
where C1: Map, C2: Map<WithType<C1::Item> = Self>, C1::Item: CastRangeFrom<C2::Item>,