about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2024-10-21 16:25:06 +0100
committerRalf Jung <post@ralfj.de>2024-10-21 16:25:32 +0100
commit75cadc09f24bed287d44462ea62f7aa3e4909e77 (patch)
tree9a7a0a34076636d8b5311b3ae42237abce521416
parent3ec4308f6cb4bba3140d736d9ebd53b234fa7df8 (diff)
downloadrust-75cadc09f24bed287d44462ea62f7aa3e4909e77.tar.gz
rust-75cadc09f24bed287d44462ea62f7aa3e4909e77.zip
update ABI compatibility docs for new option-like rules
-rw-r--r--library/core/src/primitive_docs.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/library/core/src/primitive_docs.rs b/library/core/src/primitive_docs.rs
index 22fd47b0596..95fa6c9c950 100644
--- a/library/core/src/primitive_docs.rs
+++ b/library/core/src/primitive_docs.rs
@@ -1784,9 +1784,11 @@ mod prim_ref {}
 ///   unique field that doesn't have size 0 and alignment 1 (if there is such a field).
 /// - `i32` is ABI-compatible with `NonZero<i32>`, and similar for all other integer types.
 /// - If `T` is guaranteed to be subject to the [null pointer
-///   optimization](option/index.html#representation), then `T` and `Option<T>` are ABI-compatible.
-///   Furthermore, if `U` satisfies the requirements [outlined here](result/index.html#representation),
-///   then `T` and `Result<T, U>` and `Result<U, T>` are all ABI-compatible.
+///   optimization](option/index.html#representation), and `E` is an enum satisfying the following
+///   requirements, then `T` and `E` are ABI-compatible. Such an enum `E` is called "option-like".
+///   - The enum `E` has exactly two variants.
+///   - One variant has exactly one field, of type `T`.
+///   - All fields of the other variant are zero-sized with 1-byte alignment.
 ///
 /// Furthermore, ABI compatibility satisfies the following general properties:
 ///