about summary refs log tree commit diff
path: root/library/core/src
diff options
context:
space:
mode:
authorMichael Krasnitski <michael.krasnitski@gmail.com>2023-03-13 01:31:02 -0400
committerMichael Krasnitski <michael.krasnitski@gmail.com>2023-03-13 01:31:02 -0400
commit571b0fef01ea994cd9a81405283049b5595499c5 (patch)
tree5b92a697fb6f0dceb82fefedb9c89e8d648ee915 /library/core/src
parentb05bb2900825e4d063ebf3f0f11afb08baed3bc6 (diff)
downloadrust-571b0fef01ea994cd9a81405283049b5595499c5.tar.gz
rust-571b0fef01ea994cd9a81405283049b5595499c5.zip
Clarify stability guarantee for lifetimes in enum discriminants
Diffstat (limited to 'library/core/src')
-rw-r--r--library/core/src/mem/mod.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/library/core/src/mem/mod.rs b/library/core/src/mem/mod.rs
index a67df7ed557..aa53aa29bdb 100644
--- a/library/core/src/mem/mod.rs
+++ b/library/core/src/mem/mod.rs
@@ -1118,6 +1118,11 @@ impl<T> fmt::Debug for Discriminant<T> {
 ///
 /// [Reference]: ../../reference/items/enumerations.html#custom-discriminant-values-for-fieldless-enumerations
 ///
+/// The value of a [`Discriminant<T>`] is independent of any *lifetimes* in `T`. As such, reading
+/// or writing a `Discriminant<Foo<'a>>` as a `Discriminant<Foo<'b>>` (whether via [`transmute`] or
+/// otherwise) is always sound. Note that this is **not** true for other kinds of generic
+/// parameters; `Discriminant<Foo<A>>` and `Discriminant<Foo<B>>` might be incompatible.
+///
 /// # Examples
 ///
 /// This can be used to compare enums that carry data, while disregarding