Skip to content

Commit c5be437

Browse files
committed
Stabilize const_atomic_from_ptr
The API is already stable since [1], but const stability was blocked on `const_mut_refs`. Since that was recently stabilized, const stabilize the following: // core::atomic impl AtomicBool { pub const unsafe fn from_ptr<'a>(ptr: *mut bool) -> &'a AtomicBool; } impl<T> AtomicPtr<T> { pub const unsafe fn from_ptr<'a>(ptr: *mut *mut T) -> &'a AtomicPtr<T>; } impl AtomicU8 { pub const unsafe fn from_ptr<'a>(ptr: *mut u8) -> &'a AtomicU8; } impl AtomicU16 { pub const unsafe fn from_ptr<'a>(ptr: *mut u16) -> &'a AtomicU16; } impl AtomicU32 { pub const unsafe fn from_ptr<'a>(ptr: *mut u32) -> &'a AtomicU32; } impl AtomicU64 { pub const unsafe fn from_ptr<'a>(ptr: *mut u64) -> &'a AtomicU64; } impl AtomicUsize { pub const unsafe fn from_ptr<'a>(ptr: *mut usize) -> &'a AtomicUsize; } impl AtomicI8 { pub const unsafe fn from_ptr<'a>(ptr: *mut i8) -> &'a AtomicI8; } impl AtomicI16 { pub const unsafe fn from_ptr<'a>(ptr: *mut i16) -> &'a AtomicI16; } impl AtomicI32 { pub const unsafe fn from_ptr<'a>(ptr: *mut i32) -> &'a AtomicI32; } impl AtomicI64 { pub const unsafe fn from_ptr<'a>(ptr: *mut i64) -> &'a AtomicI64; } impl AtomicIsize { pub const unsafe fn from_ptr<'a>(ptr: *mut isize) -> &'a AtomicIsize; } Closes: <#108652> [1]: <#115719>
1 parent 9322d18 commit c5be437

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

library/core/src/sync/atomic.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,8 @@ impl AtomicBool {
469469
/// [valid]: crate::ptr#safety
470470
/// [Memory model for atomic accesses]: self#memory-model-for-atomic-accesses
471471
#[stable(feature = "atomic_from_ptr", since = "1.75.0")]
472-
#[rustc_const_unstable(feature = "const_atomic_from_ptr", issue = "108652")]
472+
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
473+
#[rustc_const_stable(feature = "const_atomic_from_ptr", since = "CURRENT_RUSTC_VERSION")]
473474
pub const unsafe fn from_ptr<'a>(ptr: *mut bool) -> &'a AtomicBool {
474475
// SAFETY: guaranteed by the caller
475476
unsafe { &*ptr.cast() }
@@ -1264,7 +1265,8 @@ impl<T> AtomicPtr<T> {
12641265
/// [valid]: crate::ptr#safety
12651266
/// [Memory model for atomic accesses]: self#memory-model-for-atomic-accesses
12661267
#[stable(feature = "atomic_from_ptr", since = "1.75.0")]
1267-
#[rustc_const_unstable(feature = "const_atomic_from_ptr", issue = "108652")]
1268+
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
1269+
#[rustc_const_stable(feature = "const_atomic_from_ptr", since = "CURRENT_RUSTC_VERSION")]
12681270
pub const unsafe fn from_ptr<'a>(ptr: *mut *mut T) -> &'a AtomicPtr<T> {
12691271
// SAFETY: guaranteed by the caller
12701272
unsafe { &*ptr.cast() }
@@ -2262,7 +2264,8 @@ macro_rules! atomic_int {
22622264
/// [valid]: crate::ptr#safety
22632265
/// [Memory model for atomic accesses]: self#memory-model-for-atomic-accesses
22642266
#[stable(feature = "atomic_from_ptr", since = "1.75.0")]
2265-
#[rustc_const_unstable(feature = "const_atomic_from_ptr", issue = "108652")]
2267+
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
2268+
#[rustc_const_stable(feature = "const_atomic_from_ptr", since = "CURRENT_RUSTC_VERSION")]
22662269
pub const unsafe fn from_ptr<'a>(ptr: *mut $int_type) -> &'a $atomic_type {
22672270
// SAFETY: guaranteed by the caller
22682271
unsafe { &*ptr.cast() }

0 commit comments

Comments
 (0)