|
@@ -8,18 +8,14 @@ Add<Output=Self> + AddAssign + Sub<Output=Self> + SubAssign +
|
|
|
Mul<Output=Self> + MulAssign + Div<Output=Self> + DivAssign +
|
|
|
PartialEq {
|
|
|
/// Function returning the whole number in the requested type.
|
|
|
- ///
|
|
|
- /// # Safety
|
|
|
- /// The caller must make sure, that the given value can be represented in the target type.
|
|
|
- /// Otherwise behaviour is undefined.
|
|
|
- unsafe fn whole(value: u32) -> Self;
|
|
|
+ fn whole(value: u8) -> Self;
|
|
|
|
|
|
/// Calculate the absolute value.
|
|
|
fn abs(self) -> Self;
|
|
|
}
|
|
|
|
|
|
impl Numeric for f32 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -29,7 +25,7 @@ impl Numeric for f32 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for f64 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -39,7 +35,7 @@ impl Numeric for f64 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for i8 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -49,7 +45,7 @@ impl Numeric for i8 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for i16 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -59,7 +55,7 @@ impl Numeric for i16 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for i32 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -69,7 +65,7 @@ impl Numeric for i32 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for i64 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -79,7 +75,7 @@ impl Numeric for i64 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for i128 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -89,7 +85,7 @@ impl Numeric for i128 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for isize {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -99,7 +95,7 @@ impl Numeric for isize {
|
|
|
}
|
|
|
|
|
|
impl Numeric for u8 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -109,7 +105,7 @@ impl Numeric for u8 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for u16 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -119,7 +115,7 @@ impl Numeric for u16 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for u32 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -129,7 +125,7 @@ impl Numeric for u32 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for u64 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -139,7 +135,7 @@ impl Numeric for u64 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for u128 {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -149,7 +145,7 @@ impl Numeric for u128 {
|
|
|
}
|
|
|
|
|
|
impl Numeric for usize {
|
|
|
- unsafe fn whole(value: u32) -> Self {
|
|
|
+ fn whole(value: u8) -> Self {
|
|
|
value as Self
|
|
|
}
|
|
|
|
|
@@ -164,41 +160,41 @@ mod tests {
|
|
|
|
|
|
#[test]
|
|
|
fn floats_are_numeric() {
|
|
|
- assert_eq!(unsafe { f32::whole(0) }, 0.0);
|
|
|
- assert_eq!(unsafe { f32::whole(1) }, 1.0);
|
|
|
- assert_eq!(unsafe { f64::whole(0) }, 0.0);
|
|
|
- assert_eq!(unsafe { f64::whole(1) }, 1.0);
|
|
|
+ assert_eq!(f32::whole(0), 0.0);
|
|
|
+ assert_eq!(f32::whole(1), 1.0);
|
|
|
+ assert_eq!(f64::whole(0), 0.0);
|
|
|
+ assert_eq!(f64::whole(1), 1.0);
|
|
|
}
|
|
|
|
|
|
#[test]
|
|
|
fn integers_are_numeric() {
|
|
|
// not sure yet, if I want this to be possible
|
|
|
- assert_eq!(unsafe { i8::whole(255) }, -1);
|
|
|
-
|
|
|
- assert_eq!(unsafe { i8::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { i8::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { i16::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { i16::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { i32::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { i32::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { i64::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { i64::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { i128::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { i128::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { isize::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { isize::whole(1) }, 1);
|
|
|
-
|
|
|
- assert_eq!(unsafe { u8::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { u8::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { u16::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { u16::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { u32::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { u32::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { u64::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { u64::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { u128::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { u128::whole(1) }, 1);
|
|
|
- assert_eq!(unsafe { usize::whole(0) }, 0);
|
|
|
- assert_eq!(unsafe { usize::whole(1) }, 1);
|
|
|
+ assert_eq!(i8::whole(255), -1);
|
|
|
+
|
|
|
+ assert_eq!(i8::whole(0), 0);
|
|
|
+ assert_eq!(i8::whole(1), 1);
|
|
|
+ assert_eq!(i16::whole(0), 0);
|
|
|
+ assert_eq!(i16::whole(1), 1);
|
|
|
+ assert_eq!(i32::whole(0), 0);
|
|
|
+ assert_eq!(i32::whole(1), 1);
|
|
|
+ assert_eq!(i64::whole(0), 0);
|
|
|
+ assert_eq!(i64::whole(1), 1);
|
|
|
+ assert_eq!(i128::whole(0), 0);
|
|
|
+ assert_eq!(i128::whole(1), 1);
|
|
|
+ assert_eq!(isize::whole(0), 0);
|
|
|
+ assert_eq!(isize::whole(1), 1);
|
|
|
+
|
|
|
+ assert_eq!(u8::whole(0), 0);
|
|
|
+ assert_eq!(u8::whole(1), 1);
|
|
|
+ assert_eq!(u16::whole(0), 0);
|
|
|
+ assert_eq!(u16::whole(1), 1);
|
|
|
+ assert_eq!(u32::whole(0), 0);
|
|
|
+ assert_eq!(u32::whole(1), 1);
|
|
|
+ assert_eq!(u64::whole(0), 0);
|
|
|
+ assert_eq!(u64::whole(1), 1);
|
|
|
+ assert_eq!(u128::whole(0), 0);
|
|
|
+ assert_eq!(u128::whole(1), 1);
|
|
|
+ assert_eq!(usize::whole(0), 0);
|
|
|
+ assert_eq!(usize::whole(1), 1);
|
|
|
}
|
|
|
}
|