Open tgross35 opened 6 days ago
We currently have a lot of unsafe reads of unions fields which is source of easy unsoundness. Let's make things easier while avoiding this completely:
unsafe
s_no_extra_traits
Debug
The implementation is easy, this will just print the types as some_union { .. }:
some_union { .. }
#[cfg(feature = "extra_traits")] impl ::core::fmt::Debug for $i { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { f.debug_struct(stringify!($i)).finish_non_exhaustive() } }
We can backport this to libc-0.2 since it fixes some soundness issues without breaking any API.
libc-0.2
We currently have a lot of
unsafe
reads of unions fields which is source of easy unsoundness. Let's make things easier while avoiding this completely:s_no_extra_traits
to do an opaqueDebug
implementation on unions, here https://github.com/rust-lang/libc/blob/2f931d9d5789039fdde0419df79eee92c29b1270/src/macros.rs#L122-L129Debug
implementations on unions (which will now conflict).The implementation is easy, this will just print the types as
some_union { .. }
:We can backport this to
libc-0.2
since it fixes some soundness issues without breaking any API.