dualcache_ff/
cache_padded.rs1use core::ops::{Deref, DerefMut};
2
3#[cfg_attr(any(target_arch = "aarch64", target_arch = "arm"), repr(C, align(128)))]
10#[cfg_attr(not(any(target_arch = "aarch64", target_arch = "arm")), repr(C, align(64)))]
11pub struct CachePadded<T>(pub T);
12
13impl<T> CachePadded<T> {
14 #[inline(always)]
15 pub fn new(val: T) -> Self {
16 Self(val)
17 }
18
19 #[inline(always)]
20 pub fn into_inner(self) -> T {
21 self.0
22 }
23}
24
25impl<T> Deref for CachePadded<T> {
26 type Target = T;
27 #[inline(always)]
28 fn deref(&self) -> &T {
29 &self.0
30 }
31}
32
33impl<T> DerefMut for CachePadded<T> {
34 #[inline(always)]
35 fn deref_mut(&mut self) -> &mut T {
36 &mut self.0
37 }
38}