Skip to content

Commit

Permalink
Rollup merge of #108419 - tgross35:atomic-as-ptr, r=m-ou-se
Browse files Browse the repository at this point in the history
Stabilize `atomic_as_ptr`

Fixes #66893

This stabilizes the `as_ptr` methods for atomics. The stabilization feature gate used here is `atomic_as_ptr` which supersedes `atomic_mut_ptr` to match the change in #107736.

This needs FCP.

New stable API:

```rust
impl AtomicBool {
    pub const fn as_ptr(&self) -> *mut bool;
}

impl AtomicI32 {
    pub const fn as_ptr(&self) -> *mut i32;
}

// Includes all other atomic types

impl<T> AtomicPtr<T> {
    pub const fn as_ptr(&self) -> *mut *mut T;
}
```

r? libs-api
``@rustbot`` label +needs-fcp
  • Loading branch information
matthiaskrgr authored Mar 13, 2023
2 parents 8efa635 + 318be2b commit e670379
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
13 changes: 7 additions & 6 deletions library/core/src/sync/atomic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -960,6 +960,7 @@ impl AtomicBool {
/// ```ignore (extern-declaration)
/// # fn main() {
/// use std::sync::atomic::AtomicBool;
///
/// extern "C" {
/// fn my_atomic_op(arg: *mut bool);
/// }
Expand All @@ -971,7 +972,8 @@ impl AtomicBool {
/// # }
/// ```
#[inline]
#[unstable(feature = "atomic_mut_ptr", reason = "recently added", issue = "66893")]
#[stable(feature = "atomic_as_ptr", since = "CURRENT_RUSTC_VERSION")]
#[rustc_const_stable(feature = "atomic_as_ptr", since = "CURRENT_RUSTC_VERSION")]
pub const fn as_ptr(&self) -> *mut bool {
self.v.get().cast()
}
Expand Down Expand Up @@ -1890,7 +1892,6 @@ impl<T> AtomicPtr<T> {
/// # Examples
///
/// ```ignore (extern-declaration)
/// #![feature(atomic_mut_ptr)]
/// use std::sync::atomic::AtomicPtr;
///
/// extern "C" {
Expand All @@ -1906,7 +1907,8 @@ impl<T> AtomicPtr<T> {
/// }
/// ```
#[inline]
#[unstable(feature = "atomic_mut_ptr", reason = "recently added", issue = "66893")]
#[stable(feature = "atomic_as_ptr", since = "CURRENT_RUSTC_VERSION")]
#[rustc_const_stable(feature = "atomic_as_ptr", since = "CURRENT_RUSTC_VERSION")]
pub const fn as_ptr(&self) -> *mut *mut T {
self.p.get()
}
Expand Down Expand Up @@ -2859,9 +2861,8 @@ macro_rules! atomic_int {
/// # }
/// ```
#[inline]
#[unstable(feature = "atomic_mut_ptr",
reason = "recently added",
issue = "66893")]
#[stable(feature = "atomic_as_ptr", since = "CURRENT_RUSTC_VERSION")]
#[rustc_const_stable(feature = "atomic_as_ptr", since = "CURRENT_RUSTC_VERSION")]
pub const fn as_ptr(&self) -> *mut $int_type {
self.v.get()
}
Expand Down
1 change: 0 additions & 1 deletion library/std/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,6 @@
#![feature(utf8_chunks)]
//
// Library features (core):
#![feature(atomic_mut_ptr)]
#![feature(char_internals)]
#![feature(core_intrinsics)]
#![feature(duration_constants)]
Expand Down

0 comments on commit e670379

Please sign in to comment.