@@ -723,7 +723,8 @@ impl<T> Option<T> {
723
723
/// ```
724
724
#[ inline]
725
725
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
726
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
726
+ #[ cfg_attr( bootstrap, rustc_allow_const_fn_unstable( const_mut_refs) ) ]
727
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
727
728
pub const fn as_mut ( & mut self ) -> Option < & mut T > {
728
729
match * self {
729
730
Some ( ref mut x) => Some ( x) ,
@@ -924,7 +925,8 @@ impl<T> Option<T> {
924
925
#[ track_caller]
925
926
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
926
927
#[ cfg_attr( not( test) , rustc_diagnostic_item = "option_expect" ) ]
927
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
928
+ #[ rustc_allow_const_fn_unstable( const_precise_live_drops) ]
929
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
928
930
pub const fn expect ( self , msg : & str ) -> T {
929
931
match self {
930
932
Some ( val) => val,
@@ -962,7 +964,8 @@ impl<T> Option<T> {
962
964
#[ track_caller]
963
965
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
964
966
#[ cfg_attr( not( test) , rustc_diagnostic_item = "option_unwrap" ) ]
965
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
967
+ #[ rustc_allow_const_fn_unstable( const_precise_live_drops) ]
968
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
966
969
pub const fn unwrap ( self ) -> T {
967
970
match self {
968
971
Some ( val) => val,
@@ -1069,7 +1072,8 @@ impl<T> Option<T> {
1069
1072
#[ inline]
1070
1073
#[ track_caller]
1071
1074
#[ stable( feature = "option_result_unwrap_unchecked" , since = "1.58.0" ) ]
1072
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
1075
+ #[ rustc_allow_const_fn_unstable( const_precise_live_drops) ]
1076
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
1073
1077
pub const unsafe fn unwrap_unchecked ( self ) -> T {
1074
1078
match self {
1075
1079
Some ( val) => val,
@@ -1712,7 +1716,8 @@ impl<T> Option<T> {
1712
1716
/// ```
1713
1717
#[ inline]
1714
1718
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
1715
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
1719
+ #[ cfg_attr( bootstrap, rustc_allow_const_fn_unstable( const_mut_refs) ) ]
1720
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
1716
1721
pub const fn take ( & mut self ) -> Option < T > {
1717
1722
// FIXME(const-hack) replace `mem::replace` by `mem::take` when the latter is const ready
1718
1723
mem:: replace ( self , None )
@@ -1769,8 +1774,9 @@ impl<T> Option<T> {
1769
1774
/// assert_eq!(old, None);
1770
1775
/// ```
1771
1776
#[ inline]
1772
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
1773
1777
#[ stable( feature = "option_replace" , since = "1.31.0" ) ]
1778
+ #[ cfg_attr( bootstrap, rustc_allow_const_fn_unstable( const_mut_refs) ) ]
1779
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
1774
1780
pub const fn replace ( & mut self , value : T ) -> Option < T > {
1775
1781
mem:: replace ( self , Some ( value) )
1776
1782
}
@@ -1878,7 +1884,7 @@ impl<T> Option<&T> {
1878
1884
/// ```
1879
1885
#[ must_use = "`self` will be dropped if the result is not used" ]
1880
1886
#[ stable( feature = "copied" , since = "1.35.0" ) ]
1881
- #[ rustc_const_unstable ( feature = "const_option" , issue = "67441 " ) ]
1887
+ #[ rustc_const_stable ( feature = "const_option" , since = "CURRENT_RUSTC_VERSION " ) ]
1882
1888
pub const fn copied ( self ) -> Option < T >
1883
1889
where
1884
1890
T : Copy ,
@@ -1931,7 +1937,8 @@ impl<T> Option<&mut T> {
1931
1937
/// ```
1932
1938
#[ must_use = "`self` will be dropped if the result is not used" ]
1933
1939
#[ stable( feature = "copied" , since = "1.35.0" ) ]
1934
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
1940
+ #[ cfg_attr( bootstrap, rustc_allow_const_fn_unstable( const_mut_refs) ) ]
1941
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
1935
1942
pub const fn copied ( self ) -> Option < T >
1936
1943
where
1937
1944
T : Copy ,
@@ -1986,7 +1993,8 @@ impl<T, E> Option<Result<T, E>> {
1986
1993
/// ```
1987
1994
#[ inline]
1988
1995
#[ stable( feature = "transpose_result" , since = "1.33.0" ) ]
1989
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
1996
+ #[ rustc_allow_const_fn_unstable( const_precise_live_drops) ]
1997
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
1990
1998
pub const fn transpose ( self ) -> Result < Option < T > , E > {
1991
1999
match self {
1992
2000
Some ( Ok ( x) ) => Ok ( Some ( x) ) ,
@@ -2009,7 +2017,6 @@ const fn unwrap_failed() -> ! {
2009
2017
#[ cfg_attr( feature = "panic_immediate_abort" , inline) ]
2010
2018
#[ cold]
2011
2019
#[ track_caller]
2012
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
2013
2020
const fn expect_failed ( msg : & str ) -> ! {
2014
2021
panic_display ( & msg)
2015
2022
}
@@ -2534,7 +2541,8 @@ impl<T> Option<Option<T>> {
2534
2541
/// ```
2535
2542
#[ inline]
2536
2543
#[ stable( feature = "option_flattening" , since = "1.40.0" ) ]
2537
- #[ rustc_const_unstable( feature = "const_option" , issue = "67441" ) ]
2544
+ #[ rustc_allow_const_fn_unstable( const_precise_live_drops) ]
2545
+ #[ rustc_const_stable( feature = "const_option" , since = "CURRENT_RUSTC_VERSION" ) ]
2538
2546
pub const fn flatten ( self ) -> Option < T > {
2539
2547
// FIXME(const-hack): could be written with `and_then`
2540
2548
match self {
0 commit comments