1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
pub trait RawFrom<F: Sized>: Sized {
fn raw_from (other: F) -> Self;
}
macro_rules! impl_raw_from {
{ $($($f:ty),* => $t:ty;)* } => { $($(
impl RawFrom<$f> for $t {
#[inline(always)]
fn raw_from (other: $f) -> $t { other as $t }
}
)*)* };
}
impl_raw_from! {
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => i8;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => i16;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => i32;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => i64;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => isize;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => u8;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => u16;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => u32;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => u64;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => usize;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => f32;
i8, i16, i32, i64, isize, u8, u16, u32, u64, usize, f32, f64 => f64;
}
pub trait RawInto<T: Sized>: Sized {
fn raw_into (self) -> T;
}
impl<F: Sized, T: RawFrom<F>> RawInto<T> for F {
#[inline(always)]
fn raw_into (self) -> T { T::raw_from(self) }
}