Skip to content

Commit

Permalink
refine wording and describe alternatives
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Apr 2, 2022
1 parent 2d74528 commit dd85a76
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions library/core/src/intrinsics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -993,9 +993,13 @@ extern "rust-intrinsic" {
///
/// Note that using `transmute` to turn a pointer to a `usize` is (as noted above) [undefined
/// behavior][ub] in `const` contexts. Also outside of consts, this operation might not behave
/// as expected -- this is touching on many unspecified aspects of the Rust memory model. To
/// make sure your code is well-defined, the conversion of pointers to integers and back should
/// always be done explicitly via casts.
/// as expected -- this is touching on many unspecified aspects of the Rust memory model.
/// Depending on what the code is doing, the following alternatives are preferrable to
/// pointer-to-integer transmutation:
/// - If the code just wants to store data of arbitrary type in some buffer and needs to pick a
/// type for that buffer, it can use [`MaybeUninit`][mem::MaybeUninit].
/// - If the code actually wants to work on the address the pointer points to, it can use `as`
/// casts or [`ptr.addr()`][pointer::addr].
///
/// Turning a `*mut T` into an `&mut T`:
///
Expand Down

0 comments on commit dd85a76

Please sign in to comment.