Rustc v1.88 ships with a new lint `unnecessary_transmutes` which triggers the following error when compiling code generated by bindgen:
error: unnecessary transmute --> rust/qemu-api/libqemu_api.rlib.p/structured/bindings.inc.rs:792:18 | 792 | unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 24u8) as u32) } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace this with: `u32::cast_signed(self._bitfield_1.get(0usize, 24u8) as u32)` | = note: `-D unnecessary-transmutes` implied by `-D warnings` = help: to override `-D warnings` add `#[allow(unnecessary_transmutes)]` error: unnecessary transmute --> rust/qemu-api/libqemu_api.rlib.p/structured/bindings.inc.rs:797:28 | 797 | let val: u32 = ::std::mem::transmute(val); | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace this with: `i32::cast_unsigned(val)` error: unnecessary transmute --> rust/qemu-api/libqemu_api.rlib.p/structured/bindings.inc.rs:804:13 | 804 | / ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get( 805 | | ::std::ptr::addr_of!((*this)._bitfield_1), 806 | | 0usize, 807 | | 24u8, 808 | | ) as u32) | |_____________________^ | help: replace this with | 804 ~ u32::cast_signed(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get( 805 + ::std::ptr::addr_of!((*this)._bitfield_1), 806 + 0usize, 807 + 24u8, 808 + ) as u32) | error: unnecessary transmute --> rust/qemu-api/libqemu_api.rlib.p/structured/bindings.inc.rs:814:28 | 814 | let val: u32 = ::std::mem::transmute(val); | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace this with: `i32::cast_unsigned(val)` error: unnecessary transmute --> rust/qemu-api/libqemu_api.rlib.p/structured/bindings.inc.rs:827:41 | 827 | let _flags2: u32 = unsafe { ::std::mem::transmute(_flags2) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace this with: `i32::cast_unsigned(_flags2)` error: aborting due to 5 previous errors Silence the lint in the generated code by adding it to the allow list. Signed-off-by: Bernhard Beschow <shen...@gmail.com> --- rust/qemu-api/src/bindings.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs index 057de4b646..3cdad0f0ec 100644 --- a/rust/qemu-api/src/bindings.rs +++ b/rust/qemu-api/src/bindings.rs @@ -6,6 +6,7 @@ non_camel_case_types, non_snake_case, non_upper_case_globals, + unnecessary_transmutes, unsafe_op_in_unsafe_fn, clippy::pedantic, clippy::restriction, -- 2.50.0