diff --git a/src/lib.rs b/src/lib.rs
index 8d28466..acc016c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -29,33 +29,44 @@
#![deny(warnings)]
#![cfg_attr(not(test), no_std)]
-use core::{cmp::Ordering, fmt::{Display, Debug}, hash::{Hash, Hasher}, ops};
+use core::{
+ cmp::Ordering,
+ fmt::{Debug, Display},
+ hash::{Hash, Hasher},
+ ops,
+};
use as_slice::{AsMutSlice, AsSlice};
mod sealed;
/// 2-byte alignment
+#[derive(Clone, Copy)]
#[repr(align(2))]
pub struct A2;
/// 4-byte alignment
+#[derive(Clone, Copy)]
#[repr(align(4))]
pub struct A4;
/// 8-byte alignment
+#[derive(Clone, Copy)]
#[repr(align(8))]
pub struct A8;
/// 16-byte alignment
+#[derive(Clone, Copy)]
#[repr(align(16))]
pub struct A16;
/// 32-byte alignment
+#[derive(Clone, Copy)]
#[repr(align(32))]
pub struct A32;
/// 64-byte alignment
+#[derive(Clone, Copy)]
#[repr(align(64))]
pub struct A64;
@@ -146,6 +157,13 @@ where
}
}
+impl Copy for Aligned
+where
+ A: sealed::Alignment,
+ T: Copy,
+{
+}
+
impl Default for Aligned
where
A: sealed::Alignment,
@@ -193,7 +211,8 @@ impl Eq for Aligned
where
A: sealed::Alignment,
T: Eq,
-{}
+{
+}
impl Hash for Aligned
where
diff --git a/src/sealed.rs b/src/sealed.rs
index 018f7ab..a266d46 100644
--- a/src/sealed.rs
+++ b/src/sealed.rs
@@ -1,4 +1,4 @@
-pub trait Alignment {}
+pub trait Alignment: Copy {}
impl Alignment for super::A2 {}
impl Alignment for super::A4 {}