File tree 1 file changed +9
-2
lines changed
1 file changed +9
-2
lines changed Original file line number Diff line number Diff line change 26
26
* Evaluating a [ dereference expression] (` *expr ` ) on a raw pointer that is
27
27
[ dangling] or unaligned, even in [ place expression context]
28
28
(e.g. ` addr_of!(&*expr) ` ).
29
- * Breaking the [ pointer aliasing rules] . ` &mut T ` and ` &T ` follow LLVM’s scoped
30
- [ noalias] model, except if the ` &T ` contains an [ ` UnsafeCell<U> ` ] .
29
+ * Breaking the [ pointer aliasing rules] . ` Box<T> ` , ` &mut T ` and ` &T ` follow LLVM’s
30
+ scoped noalias model, except if the ` &T ` contains an [ ` UnsafeCell<U> ` ] .
31
+ References must not be dangling while they are live. (The exact liveness
32
+ duration is not specified, but it is certainly upper-bounded by the syntactic
33
+ lifetime assigned by the borrow checker. When a reference is passed to a
34
+ function, it is live at least as long as that function call, again except if
35
+ the ` &T ` contains an [ ` UnsafeCell<U> ` ] .) All this also applies when values of
36
+ these types are passed in a (nested) field of a compound type, but not behind
37
+ pointer indirections.
31
38
* Mutating immutable data. All data inside a [ ` const ` ] item is immutable. Moreover, all
32
39
data reached through a shared reference or data owned by an immutable binding
33
40
is immutable, unless that data is contained within an [ ` UnsafeCell<U> ` ] .
You can’t perform that action at this time.
0 commit comments