Rollup merge of #127071 - Sky9x:remove-ptr-to-from-bits, r=scottmcm · model-checking/verify-rust-std@402992c (original) (raw)
`@@ -117,72 +117,6 @@ impl<T: ?Sized> *mut T {
`
117
117
`self as _
`
118
118
`}
`
119
119
``
120
``
`-
/// Casts a pointer to its raw bits.
`
121
``
`-
///
`
122
``
`` -
/// This is equivalent to as usize
, but is more specific to enhance readability.
``
123
``
`` -
/// The inverse method is from_bits
.
``
124
``
`-
///
`
125
``
`` -
/// In particular, *p as usize
and p as usize
will both compile for
``
126
``
`-
/// pointers to numeric types but do very different things, so using this
`
127
``
`-
/// helps emphasize that reading the bits was intentional.
`
128
``
`-
///
`
129
``
`-
/// # Examples
`
130
``
`-
///
`
131
``
/// ```
132
``
`-
/// #![feature(ptr_to_from_bits)]
`
133
``
`-
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
`
134
``
`-
/// let mut array = [13, 42];
`
135
``
`-
/// let mut it = array.iter_mut();
`
136
``
`-
/// let p0: *mut i32 = it.next().unwrap();
`
137
``
`-
/// assert_eq!(<*mut _>::from_bits(p0.to_bits()), p0);
`
138
``
`-
/// let p1: *mut i32 = it.next().unwrap();
`
139
``
`-
/// assert_eq!(p1.to_bits() - p0.to_bits(), 4);
`
140
``
`-
/// }
`
141
``
/// ```
142
``
`-
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
`
143
``
`-
#[deprecated(
`
144
``
`-
since = "1.67.0",
`
145
``
`` -
note = "replaced by the expose_provenance
method, or update your code \
``
146
``
`-
to follow the strict provenance rules using its APIs"
`
147
``
`-
)]
`
148
``
`-
#[inline(always)]
`
149
``
`-
pub fn to_bits(self) -> usize
`
150
``
`-
where
`
151
``
`-
T: Sized,
`
152
``
`-
{
`
153
``
`-
self as usize
`
154
``
`-
}
`
155
``
-
156
``
`-
/// Creates a pointer from its raw bits.
`
157
``
`-
///
`
158
``
`` -
/// This is equivalent to as *mut T
, but is more specific to enhance readability.
``
159
``
`` -
/// The inverse method is to_bits
.
``
160
``
`-
///
`
161
``
`-
/// # Examples
`
162
``
`-
///
`
163
``
/// ```
164
``
`-
/// #![feature(ptr_to_from_bits)]
`
165
``
`-
/// # #[cfg(not(miri))] { // doctest does not work with strict provenance
`
166
``
`-
/// use std::ptr::NonNull;
`
167
``
`-
/// let dangling: *mut u8 = NonNull::dangling().as_ptr();
`
168
``
`-
/// assert_eq!(<*mut u8>::from_bits(1), dangling);
`
169
``
`-
/// }
`
170
``
/// ```
171
``
`-
#[unstable(feature = "ptr_to_from_bits", issue = "91126")]
`
172
``
`-
#[deprecated(
`
173
``
`-
since = "1.67.0",
`
174
``
`` -
note = "replaced by the ptr::with_exposed_provenance_mut
function, or \
``
175
``
`-
update your code to follow the strict provenance rules using its APIs"
`
176
``
`-
)]
`
177
``
`-
#[allow(fuzzy_provenance_casts)] // this is an unstable and semi-deprecated cast function
`
178
``
`-
#[inline(always)]
`
179
``
`-
pub fn from_bits(bits: usize) -> Self
`
180
``
`-
where
`
181
``
`-
T: Sized,
`
182
``
`-
{
`
183
``
`-
bits as Self
`
184
``
`-
}
`
185
``
-
186
120
`/// Gets the "address" portion of the pointer.
`
187
121
`///
`
188
122
`` /// This is similar to self as usize
, which semantically discards provenance and
``