| Gets the "address" portion of the pointer. |
| |
| This is similar to `self as usize`, except that the [provenance][crate::ptr#provenance] of |
| the pointer is discarded and not [exposed][crate::ptr#exposed-provenance]. This means that |
| casting the returned address back to a pointer yields a [pointer without |
| provenance][without_provenance], which is undefined behavior to dereference. To properly |
| restore the lost information and obtain a dereferenceable pointer, use |
| [`with_addr`][pointer::with_addr] or [`map_addr`][pointer::map_addr]. |
| |
| If using those APIs is not possible because there is no way to preserve a pointer with the |
| required provenance, then Strict Provenance might not be for you. Use pointer-integer casts |
| or [`expose_provenance`][pointer::expose_provenance] and [`with_exposed_provenance`][with_exposed_provenance] |
| instead. However, note that this makes your code less portable and less amenable to tools |
| that check for compliance with the Rust memory model. |
| |
| On most platforms this will produce a value with the same bytes as the original |
| pointer, because all the bytes are dedicated to describing the address. |
| Platforms which need to store additional information in the pointer may |
| perform a change of representation to produce a value containing only the address |
| portion of the pointer. What that means is up to the platform to define. |
| |
| This is a [Strict Provenance][crate::ptr#strict-provenance] API. |