Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document behavior of wide to thin pointer casts for DSTs #1448

Open
udoprog opened this issue Jan 17, 2024 · 1 comment
Open

Document behavior of wide to thin pointer casts for DSTs #1448

udoprog opened this issue Jan 17, 2024 · 1 comment

Comments

@udoprog
Copy link
Contributor

udoprog commented Jan 17, 2024

Related #66, rust-lang/rust#81513

The following casts are considered "true casts" per the reference:

  • *const [T] as *const U
  • *const dyn T as *const U

Today they are implemented so that the data pointer is returned and metadata discarded. However, this behavior does not appear to be documented anywhere authoritative.

In the rfc to ptr_metadata (Tracking issue: rust-lang/rust#81513) the following text was proposed, but as of today hasn't made it into the unstable Pointee trait:

Pointer metadata can be extracted from a pointer or reference with the metadata function. The data pointer can be extracted by casting a (fat) pointer to a (thin) pointer to a Sized type with the as operator, for example (x: &dyn SomeTrait) as *const SomeTrait as *const () or (x: *const dyn SomeTrait).cast::<()>().

Should this be documented in the reference or is the semantics contentious?

@RalfJung
Copy link
Member

This is not contentious at all. But indeed it would be better to state this explicitly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants