Skip to content

Commit e1892a3

Browse files
authored
More Align1 impls (#268)
1 parent 9b59fec commit e1892a3

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515
- Changed from `anyhow` to `eyre` (#265)
1616
- Added `borsh` to `UnitVal` (#266)
1717
- Removed default init requirement on unsized list default init. (#267)
18+
- Added more `Align1` impls for tuples. (#268)
1819

1920
## [0.25.1] - 2025-09-11
2021

star_frame/src/align1.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,31 @@ unsafe impl<T> Align1 for [T] where T: Align1 {}
3636
// SAFETY:
3737
// Allowed because an array of `T` is aligned to `T`.
3838
unsafe impl<T, const N: usize> Align1 for [T; N] where T: Align1 {}
39+
40+
macro_rules! impl_align1_tuple {
41+
($($name:ident),+) => {
42+
// SAFETY:
43+
// Allowed because a tuple will have an alignment equal to the max of its members.
44+
unsafe impl<$($name),+> Align1 for ($($name,)+)
45+
where
46+
$($name: Align1,)+
47+
{}
48+
};
49+
}
50+
// impl up to 16 elements
51+
impl_align1_tuple!(T1);
52+
impl_align1_tuple!(T1, T2);
53+
impl_align1_tuple!(T1, T2, T3);
54+
impl_align1_tuple!(T1, T2, T3, T4);
55+
impl_align1_tuple!(T1, T2, T3, T4, T5);
56+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6);
57+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7);
58+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8);
59+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9);
60+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10);
61+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11);
62+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12);
63+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13);
64+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14);
65+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15);
66+
impl_align1_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16);

0 commit comments

Comments
 (0)