Skip to content

Commit c4474ab

Browse files
durkaalexcrichton
authored andcommitted
stabilize mem::discriminant (closes rust-lang#24263)
1 parent 133aefc commit c4474ab

File tree

5 files changed

+8
-15
lines changed

5 files changed

+8
-15
lines changed

src/libcore/mem.rs

+8-9
Original file line numberDiff line numberDiff line change
@@ -754,39 +754,39 @@ pub unsafe fn transmute_copy<T, U>(src: &T) -> U {
754754
/// Opaque type representing the discriminant of an enum.
755755
///
756756
/// See the `discriminant` function in this module for more information.
757-
#[unstable(feature = "discriminant_value", reason = "recently added, follows RFC", issue = "24263")]
757+
#[stable(feature = "discriminant_value", since = "1.22.0")]
758758
pub struct Discriminant<T>(u64, PhantomData<*const T>);
759759

760760
// N.B. These trait implementations cannot be derived because we don't want any bounds on T.
761761

762-
#[unstable(feature = "discriminant_value", reason = "recently added, follows RFC", issue = "24263")]
762+
#[stable(feature = "discriminant_value", since = "1.22.0")]
763763
impl<T> Copy for Discriminant<T> {}
764764

765-
#[unstable(feature = "discriminant_value", reason = "recently added, follows RFC", issue = "24263")]
765+
#[stable(feature = "discriminant_value", since = "1.22.0")]
766766
impl<T> clone::Clone for Discriminant<T> {
767767
fn clone(&self) -> Self {
768768
*self
769769
}
770770
}
771771

772-
#[unstable(feature = "discriminant_value", reason = "recently added, follows RFC", issue = "24263")]
772+
#[stable(feature = "discriminant_value", since = "1.22.0")]
773773
impl<T> cmp::PartialEq for Discriminant<T> {
774774
fn eq(&self, rhs: &Self) -> bool {
775775
self.0 == rhs.0
776776
}
777777
}
778778

779-
#[unstable(feature = "discriminant_value", reason = "recently added, follows RFC", issue = "24263")]
779+
#[stable(feature = "discriminant_value", since = "1.22.0")]
780780
impl<T> cmp::Eq for Discriminant<T> {}
781781

782-
#[unstable(feature = "discriminant_value", reason = "recently added, follows RFC", issue = "24263")]
782+
#[stable(feature = "discriminant_value", since = "1.22.0")]
783783
impl<T> hash::Hash for Discriminant<T> {
784784
fn hash<H: hash::Hasher>(&self, state: &mut H) {
785785
self.0.hash(state);
786786
}
787787
}
788788

789-
#[unstable(feature = "discriminant_value", reason = "recently added, follows RFC", issue = "24263")]
789+
#[stable(feature = "discriminant_value", since = "1.22.0")]
790790
impl<T> fmt::Debug for Discriminant<T> {
791791
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
792792
fmt.debug_tuple("Discriminant")
@@ -811,7 +811,6 @@ impl<T> fmt::Debug for Discriminant<T> {
811811
/// the actual data:
812812
///
813813
/// ```
814-
/// #![feature(discriminant_value)]
815814
/// use std::mem;
816815
///
817816
/// enum Foo { A(&'static str), B(i32), C(i32) }
@@ -820,7 +819,7 @@ impl<T> fmt::Debug for Discriminant<T> {
820819
/// assert!(mem::discriminant(&Foo::B(1)) == mem::discriminant(&Foo::B(2)));
821820
/// assert!(mem::discriminant(&Foo::B(3)) != mem::discriminant(&Foo::C(3)));
822821
/// ```
823-
#[unstable(feature = "discriminant_value", reason = "recently added, follows RFC", issue = "24263")]
822+
#[stable(feature = "discriminant_value", since = "1.22.0")]
824823
pub fn discriminant<T>(v: &T) -> Discriminant<T> {
825824
unsafe {
826825
Discriminant(intrinsics::discriminant_value(v), PhantomData)

src/librustc/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
#![feature(conservative_impl_trait)]
2525
#![feature(const_fn)]
2626
#![feature(core_intrinsics)]
27-
#![feature(discriminant_value)]
2827
#![feature(i128_type)]
2928
#![cfg_attr(windows, feature(libc))]
3029
#![feature(never_type)]
@@ -34,7 +33,6 @@
3433
#![feature(slice_patterns)]
3534
#![feature(specialization)]
3635
#![feature(unboxed_closures)]
37-
#![feature(discriminant_value)]
3836
#![feature(trace_macros)]
3937
#![feature(test)]
4038

src/librustc_data_structures/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
#![feature(unsize)]
3030
#![feature(i128_type)]
3131
#![feature(conservative_impl_trait)]
32-
#![feature(discriminant_value)]
3332
#![feature(specialization)]
3433

3534
#![cfg_attr(unix, feature(libc))]

src/librustc_metadata/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#![feature(quote)]
2222
#![feature(rustc_diagnostic_macros)]
2323
#![feature(specialization)]
24-
#![feature(discriminant_value)]
2524
#![feature(rustc_private)]
2625

2726
#[macro_use]

src/test/run-pass/discriminant_value-wrapper.rs

-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
#![feature(discriminant_value)]
12-
1311
use std::mem;
1412

1513
enum ADT {

0 commit comments

Comments
 (0)