Skip to content

Commit

Permalink
Merge pull request #1554 from RalfJung/promoted-immutable
Browse files Browse the repository at this point in the history
bytes inside implicitly const-promoted expressions are immutable
  • Loading branch information
traviscross authored Aug 22, 2024
2 parents 9c0e24b + ff494bf commit 3d7ee4f
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/behavior-considered-undefined.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Please read the [Rustonomicon] before writing unsafe code.
All this also applies when values of these
types are passed in a (nested) field of a compound type, but not behind
pointer indirections.
* Mutating immutable bytes. All bytes inside a [`const`] item are immutable.
* Mutating immutable bytes. All bytes inside a [`const`] item or within an implicitly [const-promoted] expression are immutable.
The bytes owned by an immutable binding or immutable `static` are immutable, unless those bytes are part of an [`UnsafeCell<U>`].

Moreover, the bytes [pointed to] by a shared reference, including transitively through other references (both shared and mutable) and `Box`es, are immutable; transitivity includes those references stored in fields of compound types.
Expand Down Expand Up @@ -187,3 +187,4 @@ reading uninitialized memory is permitted are inside `union`s and in "padding"
[project-field]: expressions/field-expr.md
[project-tuple]: expressions/tuple-expr.md#tuple-indexing-expressions
[project-slice]: expressions/array-expr.md#array-and-slice-indexing-expressions
[const-promoted]: destructors.md#constant-promotion

0 comments on commit 3d7ee4f

Please sign in to comment.