about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2015-10-16 00:33:45 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2015-10-16 00:33:45 +0300
commit128ded71100f02026fd03a4c13e1333cd633cac9 (patch)
treecb3a1996e037e072aa70c1774fe3310601ecb504 /src
parentbe3d390cf51545b880c5cd78585fa408c087f786 (diff)
downloadrust-128ded71100f02026fd03a4c13e1333cd633cac9.tar.gz
rust-128ded71100f02026fd03a4c13e1333cd633cac9.zip
Make NonZero::new const function
Diffstat (limited to 'src')
-rw-r--r--src/libcore/nonzero.rs30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/libcore/nonzero.rs b/src/libcore/nonzero.rs
index c945e4e0661..2cf8bad60cd 100644
--- a/src/libcore/nonzero.rs
+++ b/src/libcore/nonzero.rs
@@ -38,13 +38,31 @@ unsafe impl Zeroable for u64 {}
 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Hash)]
 pub struct NonZero<T: Zeroable>(T);
 
+#[cfg(stage0)]
+macro_rules! nonzero_new {
+    () => (
+        /// Creates an instance of NonZero with the provided value.
+        /// You must indeed ensure that the value is actually "non-zero".
+        #[inline(always)]
+        pub unsafe fn new(inner: T) -> NonZero<T> {
+            NonZero(inner)
+        }
+    )
+}
+#[cfg(not(stage0))]
+macro_rules! nonzero_new {
+    () => (
+        /// Creates an instance of NonZero with the provided value.
+        /// You must indeed ensure that the value is actually "non-zero".
+        #[inline(always)]
+        pub unsafe const fn new(inner: T) -> NonZero<T> {
+            NonZero(inner)
+        }
+    )
+}
+
 impl<T: Zeroable> NonZero<T> {
-    /// Creates an instance of NonZero with the provided value.
-    /// You must indeed ensure that the value is actually "non-zero".
-    #[inline(always)]
-    pub unsafe fn new(inner: T) -> NonZero<T> {
-        NonZero(inner)
-    }
+    nonzero_new!{}
 }
 
 impl<T: Zeroable> Deref for NonZero<T> {