]> git.proxmox.com Git - rustc.git/blobdiff - src/doc/nomicon/src/what-unsafe-does.md
New upstream version 1.55.0+dfsg1
[rustc.git] / src / doc / nomicon / src / what-unsafe-does.md
index c82c70c678f016744fdd57aceaa4136eb7564b22..6a3c79f3e7882a51f2470b5ec423b1faa46f624e 100644 (file)
@@ -24,22 +24,22 @@ language cares about is preventing the following things:
   not support
 * Producing invalid values (either alone or as a field of a compound type such
   as `enum`/`struct`/array/tuple):
-    * a `bool` that isn't 0 or 1
-    * an `enum` with an invalid discriminant
-    * a null `fn` pointer
-    * a `char` outside the ranges [0x0, 0xD7FF] and [0xE000, 0x10FFFF]
-    * a `!` (all values are invalid for this type)
-    * an integer (`i*`/`u*`), floating point value (`f*`), or raw pointer read from
-      [uninitialized memory][], or uninitialized memory in a `str`.
-    * a reference/`Box` that is dangling, unaligned, or points to an invalid value.
-    * a wide reference, `Box`, or raw pointer that has invalid metadata:
-        * `dyn Trait` metadata is invalid if it is not a pointer to a vtable for
-          `Trait` that matches the actual dynamic trait the pointer or reference points to
-        * slice metadata is invalid if the length is not a valid `usize`
-          (i.e., it must not be read from uninitialized memory)
-    * a type with custom invalid values that is one of those values, such as a
-      [`NonNull`] that is null. (Requesting custom invalid values is an unstable
-      feature, but some stable libstd types, like `NonNull`, make use of it.)
+  * a `bool` that isn't 0 or 1
+  * an `enum` with an invalid discriminant
+  * a null `fn` pointer
+  * a `char` outside the ranges [0x0, 0xD7FF] and [0xE000, 0x10FFFF]
+  * a `!` (all values are invalid for this type)
+  * an integer (`i*`/`u*`), floating point value (`f*`), or raw pointer read from
+    [uninitialized memory][], or uninitialized memory in a `str`.
+  * a reference/`Box` that is dangling, unaligned, or points to an invalid value.
+  * a wide reference, `Box`, or raw pointer that has invalid metadata:
+    * `dyn Trait` metadata is invalid if it is not a pointer to a vtable for
+      `Trait` that matches the actual dynamic trait the pointer or reference points to
+    * slice metadata is invalid if the length is not a valid `usize`
+      (i.e., it must not be read from uninitialized memory)
+  * a type with custom invalid values that is one of those values, such as a
+    [`NonNull`] that is null. (Requesting custom invalid values is an unstable
+    feature, but some stable libstd types, like `NonNull`, make use of it.)
 
 "Producing" a value happens any time a value is assigned, passed to a
 function/primitive operation or returned from a function/primitive operation.