1
Fork 0

Unions are not PointerLike

This commit is contained in:
Michael Goulet 2024-01-07 18:59:20 +00:00
parent fde0e98247
commit 68bb76634d
3 changed files with 38 additions and 2 deletions

View file

@ -120,11 +120,11 @@ impl<'a> Layout<'a> {
/// Whether the layout is from a type that implements [`std::marker::PointerLike`].
///
/// Currently, that means that the type is pointer-sized, pointer-aligned,
/// and has a scalar ABI.
/// and has a initialized (non-union), scalar ABI.
pub fn is_pointer_like(self, data_layout: &TargetDataLayout) -> bool {
self.size() == data_layout.pointer_size
&& self.align().abi == data_layout.pointer_align.abi
&& matches!(self.abi(), Abi::Scalar(..))
&& matches!(self.abi(), Abi::Scalar(Scalar::Initialized { .. }))
}
}