Rollup merge of #127071 - Sky9x:remove-ptr-to-from-bits, r=scottmcm
Remove (deprecated & unstable) {to,from}_bits pointer methods These unstable methods have been deprecated for more than a year (since #95583). Remove them. See https://github.com/rust-lang/rust/issues/91126#issuecomment-1835796457 and https://github.com/rust-lang/rust/pull/110441/files#r1169574509. Closes #91126. r? `@scottmcm`
This commit is contained in:
commit
69996b5ac7
2 changed files with 0 additions and 131 deletions
|
@ -112,71 +112,6 @@ impl<T: ?Sized> *const T {
|
|||
self as _
|
||||
}
|
||||
|
||||
/// Casts a pointer to its raw bits.
|
||||
///
|
||||
/// This is equivalent to `as usize`, but is more specific to enhance readability.
|
||||
/// The inverse method is [`from_bits`](#method.from_bits).
|
||||
///
|
||||
/// In particular, `*p as usize` and `p as usize` will both compile for
|
||||
/// pointers to numeric types but do very different things, so using this
|
||||
/// helps emphasize that reading the bits was intentional.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_to_from_bits)]
|
||||
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
|
||||
/// let array = [13, 42];
|
||||
/// let p0: *const i32 = &array[0];
|
||||
/// assert_eq!(<*const _>::from_bits(p0.to_bits()), p0);
|
||||
/// let p1: *const i32 = &array[1];
|
||||
/// assert_eq!(p1.to_bits() - p0.to_bits(), 4);
|
||||
/// # }
|
||||
/// ```
|
||||
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
|
||||
#[deprecated(
|
||||
since = "1.67.0",
|
||||
note = "replaced by the `expose_provenance` method, or update your code \
|
||||
to follow the strict provenance rules using its APIs"
|
||||
)]
|
||||
#[inline(always)]
|
||||
pub fn to_bits(self) -> usize
|
||||
where
|
||||
T: Sized,
|
||||
{
|
||||
self as usize
|
||||
}
|
||||
|
||||
/// Creates a pointer from its raw bits.
|
||||
///
|
||||
/// This is equivalent to `as *const T`, but is more specific to enhance readability.
|
||||
/// The inverse method is [`to_bits`](#method.to_bits).
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_to_from_bits)]
|
||||
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
|
||||
/// use std::ptr::NonNull;
|
||||
/// let dangling: *const u8 = NonNull::dangling().as_ptr();
|
||||
/// assert_eq!(<*const u8>::from_bits(1), dangling);
|
||||
/// # }
|
||||
/// ```
|
||||
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
|
||||
#[deprecated(
|
||||
since = "1.67.0",
|
||||
note = "replaced by the `ptr::with_exposed_provenance` function, or update \
|
||||
your code to follow the strict provenance rules using its APIs"
|
||||
)]
|
||||
#[allow(fuzzy_provenance_casts)] // this is an unstable and semi-deprecated cast function
|
||||
#[inline(always)]
|
||||
pub fn from_bits(bits: usize) -> Self
|
||||
where
|
||||
T: Sized,
|
||||
{
|
||||
bits as Self
|
||||
}
|
||||
|
||||
/// Gets the "address" portion of the pointer.
|
||||
///
|
||||
/// This is similar to `self as usize`, which semantically discards *provenance* and
|
||||
|
|
|
@ -117,72 +117,6 @@ impl<T: ?Sized> *mut T {
|
|||
self as _
|
||||
}
|
||||
|
||||
/// Casts a pointer to its raw bits.
|
||||
///
|
||||
/// This is equivalent to `as usize`, but is more specific to enhance readability.
|
||||
/// The inverse method is [`from_bits`](pointer#method.from_bits-1).
|
||||
///
|
||||
/// In particular, `*p as usize` and `p as usize` will both compile for
|
||||
/// pointers to numeric types but do very different things, so using this
|
||||
/// helps emphasize that reading the bits was intentional.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_to_from_bits)]
|
||||
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
|
||||
/// let mut array = [13, 42];
|
||||
/// let mut it = array.iter_mut();
|
||||
/// let p0: *mut i32 = it.next().unwrap();
|
||||
/// assert_eq!(<*mut _>::from_bits(p0.to_bits()), p0);
|
||||
/// let p1: *mut i32 = it.next().unwrap();
|
||||
/// assert_eq!(p1.to_bits() - p0.to_bits(), 4);
|
||||
/// }
|
||||
/// ```
|
||||
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
|
||||
#[deprecated(
|
||||
since = "1.67.0",
|
||||
note = "replaced by the `expose_provenance` method, or update your code \
|
||||
to follow the strict provenance rules using its APIs"
|
||||
)]
|
||||
#[inline(always)]
|
||||
pub fn to_bits(self) -> usize
|
||||
where
|
||||
T: Sized,
|
||||
{
|
||||
self as usize
|
||||
}
|
||||
|
||||
/// Creates a pointer from its raw bits.
|
||||
///
|
||||
/// This is equivalent to `as *mut T`, but is more specific to enhance readability.
|
||||
/// The inverse method is [`to_bits`](pointer#method.to_bits-1).
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(ptr_to_from_bits)]
|
||||
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
|
||||
/// use std::ptr::NonNull;
|
||||
/// let dangling: *mut u8 = NonNull::dangling().as_ptr();
|
||||
/// assert_eq!(<*mut u8>::from_bits(1), dangling);
|
||||
/// }
|
||||
/// ```
|
||||
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
|
||||
#[deprecated(
|
||||
since = "1.67.0",
|
||||
note = "replaced by the `ptr::with_exposed_provenance_mut` function, or \
|
||||
update your code to follow the strict provenance rules using its APIs"
|
||||
)]
|
||||
#[allow(fuzzy_provenance_casts)] // this is an unstable and semi-deprecated cast function
|
||||
#[inline(always)]
|
||||
pub fn from_bits(bits: usize) -> Self
|
||||
where
|
||||
T: Sized,
|
||||
{
|
||||
bits as Self
|
||||
}
|
||||
|
||||
/// Gets the "address" portion of the pointer.
|
||||
///
|
||||
/// This is similar to `self as usize`, which semantically discards *provenance* and
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue