Explorar o código

Avoid infinite recursion on `no_std`

Vinzent Steinberg %!s(int64=7) %!d(string=hai) anos
pai
achega
ba73ba2af0
Modificáronse 2 ficheiros con 16 adicións e 0 borrados
  1. 14 0
      traits/src/float.rs
  2. 2 0
      traits/src/lib.rs

+ 14 - 0
traits/src/float.rs

@@ -1268,16 +1268,30 @@ macro_rules! float_impl {
                 <$T>::log10(self)
             }
 
+            #[cfg(feature = "std")]
             #[inline]
             fn to_degrees(self) -> Self {
                 <$T>::to_degrees(self)
             }
 
+            #[cfg(feature = "std")]
             #[inline]
             fn to_radians(self) -> Self {
                 <$T>::to_radians(self)
             }
 
+            #[cfg(not(feature = "std"))]
+            #[inline]
+            fn to_degrees(self) -> Self {
+               self * (180. / ::core::$T::consts::PI)
+            }
+
+            #[cfg(not(feature = "std"))]
+            #[inline]
+            fn to_radians(self) -> Self {
+               self * (::core::$T::consts::PI / 180.)
+            }
+
             #[cfg(feature = "std")]
             #[inline]
             fn max(self, other: Self) -> Self {

+ 2 - 0
traits/src/lib.rs

@@ -14,6 +14,8 @@
        html_root_url = "https://rust-num.github.io/num/",
        html_playground_url = "http://play.integer32.com/")]
 
+#![deny(unconditional_recursion)]
+
 #![cfg_attr(not(feature = "std"), no_std)]
 #[cfg(feature = "std")]
 extern crate core;