#![warn(
clippy::complexity,
clippy::correctness,
clippy::nursery,
clippy::pedantic,
clippy::perf,
clippy::style,
clippy::suspicious
)]
#![allow(clippy::derive_partial_eq_without_eq)]
use const_builder::ConstBuilder;
#[derive(Clone, Copy, Debug, PartialEq)]
#[repr(align(512))]
struct HugeAlign<T>(T);
#[derive(Debug, PartialEq, ConstBuilder)]
#[cfg_attr(any(), repr(Rust, packed))]
struct UnconditionalNotPacked<T: ?Sized> {
field: T,
}
#[derive(Debug, PartialEq, ConstBuilder)]
#[cfg_attr(all(), repr(Rust, packed))]
struct UnconditionalPacked<T> {
field: T,
}
#[test]
fn unconditional_not_packed() {
let not_packed = UnconditionalNotPacked::builder()
.field(HugeAlign(16))
.build();
assert_eq!(align_of_val(¬_packed), 512);
assert_eq!(
not_packed,
UnconditionalNotPacked {
field: HugeAlign(16)
}
);
}
#[test]
fn unconditional_packed() {
let packed = UnconditionalPacked::builder().field(HugeAlign(16)).build();
assert_eq!(align_of_val(&packed), 1);
assert_eq!(
packed,
UnconditionalPacked {
field: HugeAlign(16)
}
);
}