Document futility of printing temporary pointers · qinheping/verify-rust-std@9b21aa0 (original) (raw)

Original file line number Diff line number Diff line change
@@ -975,9 +975,17 @@ pub trait UpperHex {
975 975 /// `p` formatting.
976 976 ///
977 977 /// The `Pointer` trait should format its output as a memory location. This is commonly presented
978 -/// as hexadecimal.
978 +/// as hexadecimal. For more information on formatters, see [the module-level documentation][module].
979 979 ///
980 -/// For more information on formatters, see [the module-level documentation][module].
980 +/// Printing of pointers is not a reliable way to discover how Rust programs are implemented.
981 +/// The act of reading an address changes the program itself, and may change how the data is represented
982 +/// in memory, and may affect which optimizations are applied to the code.
983 +///
984 +/// The printed pointer values are not guaranteed to be stable nor unique identifiers of objects.
985 +/// Rust allows moving values to different memory locations, and may reuse the same memory locations
986 +/// for different purposes.
987 +///
988 +/// There is no guarantee that the printed value can be converted back to a pointer.
981 989 ///
982 990 /// [module]: ../../std/fmt/index.html
983 991 ///