Skip to content

repr(transparent): do not consider repr(C) types to be 1-ZST#147185

Merged
bors merged 1 commit intorust-lang:masterfrom
RalfJung:repr-c-not-zst
Oct 28, 2025
Merged

repr(transparent): do not consider repr(C) types to be 1-ZST#147185
bors merged 1 commit intorust-lang:masterfrom
RalfJung:repr-c-not-zst

Conversation

@RalfJung
Copy link
Member

@RalfJung RalfJung commented Sep 30, 2025

Context: rust-lang/unsafe-code-guidelines#552

This experiments with a suggestion by @RustyYato to stop considering repr(C) types as 1-ZST for the purpose of repr(transparent). If we go with rust-lang/rfcs#3845 (or another approach for fixing repr(C)), they will anyway not be ZST on all targets any more, so this removes a portability hazard. Furthermore, zero-sized repr(C) structs may have to be treated as non-ZST for the win64 ABI (at least that's what gcc/clang do), so allowing them to be ignored in repr(transparent) types is not entirely coherent.

Turns out we already have an FCW for repr(transparent), namely #78586. This extends that lint to also check for repr(C).

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. finished-final-comment-period The final comment period is finished for this PR / Issue. I-lang-radar Items that are on lang's radar and will need eventual work or consideration. needs-fcp This change is insta-stable, or significant enough to need a team FCP to proceed. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-lang Relevant to the language team to-announce Announce this issue on triage meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.