about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorBastian Kauschke <bastian_kauschke@hotmail.de>2020-03-08 14:24:32 +0100
committerBastian Kauschke <bastian_kauschke@hotmail.de>2020-03-08 14:24:32 +0100
commit6d03bbd480ef9bef09321fbfdc00229a03091b11 (patch)
treedcf7fd10df1455d72968a192223a3a73ce56d6ce /src/libcore
parentf943349eafaa75a60c05b0c84dcdb771d0eae8c9 (diff)
downloadrust-6d03bbd480ef9bef09321fbfdc00229a03091b11.tar.gz
rust-6d03bbd480ef9bef09321fbfdc00229a03091b11.zip
constify `mem::discriminant`
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/intrinsics.rs1
-rw-r--r--src/libcore/lib.rs1
-rw-r--r--src/libcore/mem/mod.rs3
3 files changed, 4 insertions, 1 deletions
diff --git a/src/libcore/intrinsics.rs b/src/libcore/intrinsics.rs
index a889eff75c0..63c5d782e65 100644
--- a/src/libcore/intrinsics.rs
+++ b/src/libcore/intrinsics.rs
@@ -1852,6 +1852,7 @@ extern "rust-intrinsic" {
     ///
     /// The stabilized version of this intrinsic is
     /// [`std::mem::discriminant`](../../std/mem/fn.discriminant.html)
+    #[rustc_const_unstable(feature = "const_discriminant", issue = "69821")]
     pub fn discriminant_value<T>(v: &T) -> u64;
 
     /// Rust's "try catch" construct which invokes the function pointer `f` with
diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs
index 41fb4a77c7a..cac61c2c674 100644
--- a/src/libcore/lib.rs
+++ b/src/libcore/lib.rs
@@ -72,6 +72,7 @@
 #![feature(concat_idents)]
 #![feature(const_ascii_ctype_on_intrinsics)]
 #![feature(const_alloc_layout)]
+#![feature(const_discriminant)]
 #![feature(const_if_match)]
 #![feature(const_loop)]
 #![feature(const_checked_int_methods)]
diff --git a/src/libcore/mem/mod.rs b/src/libcore/mem/mod.rs
index 90144d11dc9..c23d0adab5c 100644
--- a/src/libcore/mem/mod.rs
+++ b/src/libcore/mem/mod.rs
@@ -864,6 +864,7 @@ impl<T> fmt::Debug for Discriminant<T> {
 /// assert_ne!(mem::discriminant(&Foo::B(3)), mem::discriminant(&Foo::C(3)));
 /// ```
 #[stable(feature = "discriminant_value", since = "1.21.0")]
-pub fn discriminant<T>(v: &T) -> Discriminant<T> {
+#[rustc_const_unstable(feature = "const_discriminant", issue = "69821")]
+pub const fn discriminant<T>(v: &T) -> Discriminant<T> {
     Discriminant(intrinsics::discriminant_value(v), PhantomData)
 }