diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-10-16 00:33:45 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-10-16 00:33:45 +0300 |
| commit | 128ded71100f02026fd03a4c13e1333cd633cac9 (patch) | |
| tree | cb3a1996e037e072aa70c1774fe3310601ecb504 /src | |
| parent | be3d390cf51545b880c5cd78585fa408c087f786 (diff) | |
| download | rust-128ded71100f02026fd03a4c13e1333cd633cac9.tar.gz rust-128ded71100f02026fd03a4c13e1333cd633cac9.zip | |
Make NonZero::new const function
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcore/nonzero.rs | 30 |
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> { |
