rust-lang / libc

Raw bindings to platform APIs for Rust
https://docs.rs/libc
Apache License 2.0
2.02k stars 1.01k forks source link

Latest nightly compiler reports dead_code warnings for structs with private fields #3740

Open asomers opened 3 weeks ago

asomers commented 3 weeks ago

Sometime in the last week the rustc nightly compiler got more aggressive about reporting dead_code warnings. It now warns whenever a struct contains a private field but no constructor. That catches many structs in libc, which are intended to be initialized with std::mem::zeroed(). IMHO this is a rustc bug. This ought to be a separate lint so it can be silenced without silencing all dead_code warnings.

Here's an example build failure: https://cirrus-ci.com/task/6392171014651904?logs=test#L17

my4ng commented 3 weeks ago

I don't think the change is going to get reverted or changed IMO. One workaround would be to add allow(dead_code) to all affected structs, but that can easily hide potential problems. Another is to change all the private fields to public, and I think this was the suggestion in the upstream issue.