mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Rollup merge of #127879 - kornelski:bad-pointer-printf, r=workingjubilee
Document futility of printing temporary pointers In the user forum I've seen a few people trying to understand how borrowing and moves are implemented by peppering their code with printing of `{:p}` of references to variables and expressions. This is a bad idea. It gives misleading and confusing results, because of autoderef magic, printing pointers of temporaries on the stack, and/or causes LLVM to optimize code differently when values had their address exposed.
This commit is contained in:
commit
0151cbe6e8
@ -975,9 +975,17 @@ pub trait UpperHex {
|
|||||||
/// `p` formatting.
|
/// `p` formatting.
|
||||||
///
|
///
|
||||||
/// The `Pointer` trait should format its output as a memory location. This is commonly presented
|
/// The `Pointer` trait should format its output as a memory location. This is commonly presented
|
||||||
/// as hexadecimal.
|
/// as hexadecimal. For more information on formatters, see [the module-level documentation][module].
|
||||||
///
|
///
|
||||||
/// For more information on formatters, see [the module-level documentation][module].
|
/// Printing of pointers is not a reliable way to discover how Rust programs are implemented.
|
||||||
|
/// The act of reading an address changes the program itself, and may change how the data is represented
|
||||||
|
/// in memory, and may affect which optimizations are applied to the code.
|
||||||
|
///
|
||||||
|
/// The printed pointer values are not guaranteed to be stable nor unique identifiers of objects.
|
||||||
|
/// Rust allows moving values to different memory locations, and may reuse the same memory locations
|
||||||
|
/// for different purposes.
|
||||||
|
///
|
||||||
|
/// There is no guarantee that the printed value can be converted back to a pointer.
|
||||||
///
|
///
|
||||||
/// [module]: ../../std/fmt/index.html
|
/// [module]: ../../std/fmt/index.html
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user