mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Rollup merge of #131261 - clarfonthey:unsafe-cell-from-mut, r=m-ou-se
Stabilize `UnsafeCell::from_mut` Closes #111645. FCP: https://github.com/rust-lang/rust/issues/111645#issuecomment-2393893003 Note that because `const_mut_refs` and `const_refs_to_cell` was stabilized, it's okay to const-stabilize this method as well.
This commit is contained in:
commit
efa5af96a1
@ -2122,7 +2122,6 @@ impl<T: ?Sized> UnsafeCell<T> {
|
|||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// # #![feature(unsafe_cell_from_mut)]
|
|
||||||
/// use std::cell::UnsafeCell;
|
/// use std::cell::UnsafeCell;
|
||||||
///
|
///
|
||||||
/// let mut val = 42;
|
/// let mut val = 42;
|
||||||
@ -2132,7 +2131,9 @@ impl<T: ?Sized> UnsafeCell<T> {
|
|||||||
/// assert_eq!(*uc.get_mut(), 41);
|
/// assert_eq!(*uc.get_mut(), 41);
|
||||||
/// ```
|
/// ```
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
#[unstable(feature = "unsafe_cell_from_mut", issue = "111645")]
|
#[stable(feature = "unsafe_cell_from_mut", since = "CURRENT_RUSTC_VERSION")]
|
||||||
|
#[rustc_const_stable(feature = "unsafe_cell_from_mut", since = "CURRENT_RUSTC_VERSION")]
|
||||||
|
#[cfg_attr(bootstrap, rustc_allow_const_fn_unstable(const_mut_refs))]
|
||||||
pub const fn from_mut(value: &mut T) -> &mut UnsafeCell<T> {
|
pub const fn from_mut(value: &mut T) -> &mut UnsafeCell<T> {
|
||||||
// SAFETY: `UnsafeCell<T>` has the same memory layout as `T` due to #[repr(transparent)].
|
// SAFETY: `UnsafeCell<T>` has the same memory layout as `T` due to #[repr(transparent)].
|
||||||
unsafe { &mut *(value as *mut T as *mut UnsafeCell<T>) }
|
unsafe { &mut *(value as *mut T as *mut UnsafeCell<T>) }
|
||||||
|
Loading…
Reference in New Issue
Block a user