Skip to content

Commit d3dacb6

Browse files
committed
stabilize const mem::discriminant
1 parent f315c35 commit d3dacb6

File tree

4 files changed

+6
-4
lines changed

4 files changed

+6
-4
lines changed

src/libcore/intrinsics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1914,7 +1914,7 @@ extern "rust-intrinsic" {
19141914
///
19151915
/// The stabilized version of this intrinsic is
19161916
/// [`std::mem::discriminant`](../../std/mem/fn.discriminant.html)
1917-
#[rustc_const_unstable(feature = "const_discriminant", issue = "69821")]
1917+
#[rustc_const_stable(feature = "const_discriminant", since = "1.46.0")]
19181918
pub fn discriminant_value<T>(v: &T) -> <T as DiscriminantKind>::Discriminant;
19191919

19201920
/// Rust's "try catch" construct which invokes the function pointer `try_fn`

src/libcore/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@
7272
#![feature(concat_idents)]
7373
#![feature(const_ascii_ctype_on_intrinsics)]
7474
#![feature(const_alloc_layout)]
75-
#![feature(const_discriminant)]
7675
#![feature(const_if_match)]
7776
#![feature(const_loop)]
7877
#![feature(const_checked_int_methods)]

src/libcore/mem/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -993,7 +993,7 @@ impl<T> fmt::Debug for Discriminant<T> {
993993
/// assert_ne!(mem::discriminant(&Foo::B(3)), mem::discriminant(&Foo::C(3)));
994994
/// ```
995995
#[stable(feature = "discriminant_value", since = "1.21.0")]
996-
#[rustc_const_unstable(feature = "const_discriminant", issue = "69821")]
996+
#[rustc_const_stable(feature = "const_discriminant", since = "1.46.0")]
997997
pub const fn discriminant<T>(v: &T) -> Discriminant<T> {
998998
Discriminant(intrinsics::discriminant_value(v))
999999
}

src/test/ui/consts/const_discriminant.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// run-pass
2-
#![feature(const_discriminant)]
32
#![allow(dead_code)]
43

54
use std::mem::{discriminant, Discriminant};
@@ -20,6 +19,8 @@ const TEST_A: Discriminant<Test> = discriminant(&Test::A(5));
2019
const TEST_A_OTHER: Discriminant<Test> = discriminant(&Test::A(17));
2120
const TEST_B: Discriminant<Test> = discriminant(&Test::B);
2221

22+
const TEST_TRIVIAL: Discriminant<u32> = discriminant(&42);
23+
2324
enum Void {}
2425

2526
enum SingleVariant {
@@ -37,4 +38,6 @@ fn main() {
3738
assert_ne!(TEST_B, discriminant(identity(&Test::C { a: 42, b: 7 })));
3839

3940
assert_eq!(TEST_V, discriminant(identity(&SingleVariant::V)));
41+
42+
assert_eq!(TEST_TRIVIAL, discriminant(identity(&42)));
4043
}

0 commit comments

Comments
 (0)