Skip to content

[pull] master from rust-lang:master#122

Merged
pull[bot] merged 10 commits into
Arstman:masterfrom
rust-lang:master
Jun 16, 2026
Merged

[pull] master from rust-lang:master#122
pull[bot] merged 10 commits into
Arstman:masterfrom
rust-lang:master

Conversation

@pull

@pull pull Bot commented Jun 16, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

The pointer-to-pointer cast rules and the wide-pointer validity rule
both speak of the *metadata* of a pointer, but we hadn't explicitly
defined the term (even though we had defined the contents of that
metadata).  Let's do that and link to it.
We refer to the unsized tail of a type, but we hadn't defined it.
Let's do that and link to the definition.
The validity rule for the metadata of a wide reference, `Box<T>`,
or raw pointer mentions `dyn Trait` and slice but had omitted
`str`.  Let's fix that.
…metadata-rule

Cover `str` in the wide-pointer metadata rule
We document that, for references and `Box<T>`, pointed-to values
with slice or `str` metadata must be no larger than `isize::MAX`.  We
hadn't required this for pointed-to values with `dyn` metadata.  It's
tempting to think this isn't necessary since we separately require
that the metadata point to a vtable generated by the compiler, which
ensures the encoded size of the erased type is OK.

But the bound is on the total size of the pointed-to value, including
any sized prefix of a type with an unsized tail.  Since the prefix
combined with the size in the vtable can push us past the limit, we
need the separate restriction.

Let's apply the rule to both cases and add an admonition to remind
ourselves of why this is needed.
We say that pointers to DSTs store metadata and what that metadata
is for pointers to slices, `str`, and trait objects.  But a struct or
tuple with an unsized tail is itself a DST, and we hadn't said what
the metadata is for pointers to these unsized types.

Now that we've defined *metadata* and *unsized tail*, let's complete
this enumeration.
…tal-size-bound

Generalize the wide-pointer total-size bound
…ers-to-indirectly-sized-types

Document metadata of ptrs to indirectly unsized types
@pull pull Bot locked and limited conversation to collaborators Jun 16, 2026
@pull pull Bot added the ⤵️ pull label Jun 16, 2026
@pull pull Bot merged commit f6f674f into Arstman:master Jun 16, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant