File tree 1 file changed +6
-1
lines changed 1 file changed +6
-1
lines changed Original file line number Diff line number Diff line change @@ -1188,12 +1188,15 @@ the guarantee that these issues are never caused by safe code.
1188
1188
1189
1189
* Data races
1190
1190
* Dereferencing a null/dangling raw pointer
1191
- * Mutating an immutable value/reference without ` UnsafeCell `
1192
1191
* Reads of [ undef] ( http://llvm.org/docs/LangRef.html#undefined-values )
1193
1192
(uninitialized) memory
1194
1193
* Breaking the [ pointer aliasing
1195
1194
rules] ( http://llvm.org/docs/LangRef.html#pointer-aliasing-rules )
1196
1195
with raw pointers (a subset of the rules used by C)
1196
+ * ` &mut ` and ` & ` follow LLVM’s scoped [ noalias] model, except if the ` &T `
1197
+ contains an ` UnsafeCell<U> ` . Unsafe code must not violate these aliasing
1198
+ guarantees.
1199
+ * Mutating an immutable value/reference without ` UnsafeCell<U> `
1197
1200
* Invoking undefined behavior via compiler intrinsics:
1198
1201
* Indexing outside of the bounds of an object with ` std::ptr::offset `
1199
1202
(` offset ` intrinsic), with
@@ -1210,6 +1213,8 @@ the guarantee that these issues are never caused by safe code.
1210
1213
code. Rust's failure system is not compatible with exception handling in
1211
1214
other languages. Unwinding must be caught and handled at FFI boundaries.
1212
1215
1216
+ [ noalias ] : http://llvm.org/docs/LangRef.html#noalias
1217
+
1213
1218
##### Behaviour not considered unsafe
1214
1219
1215
1220
This is a list of behaviour not considered * unsafe* in Rust terms, but that may
You can’t perform that action at this time.
0 commit comments