about summary refs log tree commit diff
path: root/compiler/rustc_llvm/llvm-wrapper
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2023-09-08 14:10:49 +0200
committerGitHub <noreply@github.com>2023-09-08 14:10:49 +0200
commit2cceedd0ef9fc26250f3d27f7fd4e980f1deb72d (patch)
tree8aebbd2819373e17be3a65bf8c9bedbd18780b77 /compiler/rustc_llvm/llvm-wrapper
parent9be4eac2647432aa863f65da8a116f2eafd90ee9 (diff)
parent571b0fef01ea994cd9a81405283049b5595499c5 (diff)
downloadrust-2cceedd0ef9fc26250f3d27f7fd4e980f1deb72d.tar.gz
rust-2cceedd0ef9fc26250f3d27f7fd4e980f1deb72d.zip
Rollup merge of #104299 - mkrasnitski:discriminant-transmute-docs, r=oli-obk
Clarify stability guarantee for lifetimes in enum discriminants

Since `std::mem::Discriminant` erases lifetimes, it should be clarified that changing the concrete value of a lifetime parameter does not change the value of an enum discriminant for a given variant. This is useful as it guarantees that it is safe to transmute `Discriminant<Foo<'a>>` to `Discriminant<Foo<'b>>` for any combination of `'a` and `'b`. This also holds for type-generics as long as the type parameters do not change, e.g. `Discriminant<Foo<T, 'a>>` can be transmuted to `Discriminant<Foo<T, 'b>>`.

Side note: Is what I've written actually enough to imply soundness (or rather codify it), or should it specifically be spelled out that it's OK to transmute in the above way?
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper')
0 files changed, 0 insertions, 0 deletions