Explorar o código

Adding default implementation

James Lucas %!s(int64=8) %!d(string=hai) anos
pai
achega
381942eb4f
Modificáronse 1 ficheiros con 11 adicións e 1 borrados
  1. 11 1
      traits/src/float.rs

+ 11 - 1
traits/src/float.rs

@@ -2,6 +2,9 @@ use std::mem;
 use std::ops::Neg;
 use std::num::FpCategory;
 
+// Used for default implementation of `epsilon`
+use std::f32;
+
 use {Num, NumCast};
 
 // FIXME: these doctests aren't actually helpful, because they're using and
@@ -99,7 +102,14 @@ pub trait Float
     ///
     /// assert_eq!(x, f64::EPSILON);
     /// ```
-    fn epsilon() -> Self;
+    ///
+    /// # Panics
+    ///
+    /// The default implementation will panic if `f32::EPSILON` cannot
+    /// be cast to `Self`.
+    fn epsilon() -> Self {
+        Self::from(f32::EPSILON).expect("Unable to cast from f32::EPSILON")
+    }
 
     /// Returns the largest finite value that this type can represent.
     ///