Emit const __BindgenUnionField accessors and comply with Rust 2024 unsafe-op-in-unsafe-fn #3337
+24
−33
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adjusts the generated
__BindgenUnionFieldimplementation to be clearer about unsafety and compatible with the Rust 2024unsafe-op-in-unsafe-fnrules: https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.htmlIn Rust 2024, unsafe operations inside an
unsafe fnmust be wrapped in an explicitunsafe {}block. Instead of relying onBindgenContext::wrap_unsafe_ops, the generated code now directly wraps themem::transmute(self)call inunsafe { ... }, making the unsafety explicit at the operation site.Additionally, the generated methods are now
const:newis emitted aspub const fnas_ref/as_mutare emitted aspub const unsafe fnThis is possible because
mem::transmuteis available in const contexts since Rust 1.56. The change simplifies the output and improves forward compatibility without changing the observable behavior of the bindings.