diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2024-05-12 13:41:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-12 13:41:57 +0200 |
| commit | 5087947695d6aee6c73fb3dbc9b10c5bd9cb6162 (patch) | |
| tree | bfb346adb8dc6e566ada4608426178af0808ffef | |
| parent | 4fd98a4b1b100f5329c6efae18031791f64372d2 (diff) | |
| parent | 15df3d78e47466e651510d93ee36c0852ac4374e (diff) | |
Rollup merge of #125021 - joshlf:patch-11, r=RalfJung
Update reference safety requirements Per https://github.com/rust-lang/rust/pull/116677#issuecomment-1945495786, the language as written promises too much. This PR relaxes the language to be consistent with current semantics. If and when #117945 is implemented, we can revert to the old language. While we're here, we also require that references be non-null. cc ``@RalfJung``
| -rw-r--r-- | library/core/src/primitive_docs.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/library/core/src/primitive_docs.rs b/library/core/src/primitive_docs.rs index d8597369b9b..8283fdc459b 100644 --- a/library/core/src/primitive_docs.rs +++ b/library/core/src/primitive_docs.rs @@ -1467,8 +1467,9 @@ mod prim_usize {} /// For all types, `T: ?Sized`, and for all `t: &T` or `t: &mut T`, when such values cross an API /// boundary, the following invariants must generally be upheld: /// +/// * `t` is non-null /// * `t` is aligned to `align_of_val(t)` -/// * `t` is dereferenceable for `size_of_val(t)` many bytes +/// * if `size_of_val(t) > 0`, then `t` is dereferenceable for `size_of_val(t)` many bytes /// /// If `t` points at address `a`, being "dereferenceable" for N bytes means that the memory range /// `[a, a + N)` is all contained within a single [allocated object]. |
