Skip to content

Commit dd9d7c6

Browse files
Rollup merge of rust-lang#158651 - tshepang:restrict-use-of-unsafe, r=LawnGnome
ptr doc: reduce use of unsafe block to where needed
2 parents 6408965 + a1fb429 commit dd9d7c6

1 file changed

Lines changed: 19 additions & 21 deletions

File tree

library/core/src/ptr/mod.rs

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -300,27 +300,25 @@
300300
//! represent the tagged pointer as an actual pointer and not a `usize`*. For instance:
301301
//!
302302
//! ```
303-
//! unsafe {
304-
//! // A flag we want to pack into our pointer
305-
//! static HAS_DATA: usize = 0x1;
306-
//! static FLAG_MASK: usize = !HAS_DATA;
307-
//!
308-
//! // Our value, which must have enough alignment to have spare least-significant-bits.
309-
//! let my_precious_data: u32 = 17;
310-
//! assert!(align_of::<u32>() > 1);
311-
//!
312-
//! // Create a tagged pointer
313-
//! let ptr = &my_precious_data as *const u32;
314-
//! let tagged = ptr.map_addr(|addr| addr | HAS_DATA);
315-
//!
316-
//! // Check the flag:
317-
//! if tagged.addr() & HAS_DATA != 0 {
318-
//! // Untag and read the pointer
319-
//! let data = *tagged.map_addr(|addr| addr & FLAG_MASK);
320-
//! assert_eq!(data, 17);
321-
//! } else {
322-
//! unreachable!()
323-
//! }
303+
//! // A flag we want to pack into our pointer
304+
//! static HAS_DATA: usize = 0x1;
305+
//! static FLAG_MASK: usize = !HAS_DATA;
306+
//!
307+
//! // Our value, which must have enough alignment to have spare least-significant-bits.
308+
//! let my_precious_data: u32 = 17;
309+
//! assert!(align_of::<u32>() > 1);
310+
//!
311+
//! // Create a tagged pointer
312+
//! let ptr = &my_precious_data as *const u32;
313+
//! let tagged = ptr.map_addr(|addr| addr | HAS_DATA);
314+
//!
315+
//! // Check the flag:
316+
//! if tagged.addr() & HAS_DATA != 0 {
317+
//! // Untag and read the pointer
318+
//! let data = unsafe { *tagged.map_addr(|addr| addr & FLAG_MASK) };
319+
//! assert_eq!(data, 17);
320+
//! } else {
321+
//! unreachable!()
324322
//! }
325323
//! ```
326324
//!

0 commit comments

Comments
 (0)