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

``