#[repr(C)]pub struct Aligned<A, T>where
T: ?Sized,{ /* private fields */ }
Expand description
A newtype with alignment of at least A
bytes
Trait Implementations§
Source§impl<A, A2, N, M> AsAlignedChunks<A2, M> for Aligned<A, GenericArray<u8, N>>where
A: Alignment,
A2: Alignment,
<A2 as Alignment>::Num: IsLessOrEqual<<A as Alignment>::Num, Output = B1>,
N: ArrayLength<u8>,
M: ArrayLength<u8> + PartialDiv<<A2 as Alignment>::Num>,
impl<A, A2, N, M> AsAlignedChunks<A2, M> for Aligned<A, GenericArray<u8, N>>where
A: Alignment,
A2: Alignment,
<A2 as Alignment>::Num: IsLessOrEqual<<A as Alignment>::Num, Output = B1>,
N: ArrayLength<u8>,
M: ArrayLength<u8> + PartialDiv<<A2 as Alignment>::Num>,
Source§fn as_aligned_chunks(&self) -> &[Aligned<A2, GenericArray<u8, M>>]
fn as_aligned_chunks(&self) -> &[Aligned<A2, GenericArray<u8, M>>]
Source§fn as_mut_aligned_chunks(&mut self) -> &mut [Aligned<A2, GenericArray<u8, M>>]
fn as_mut_aligned_chunks(&mut self) -> &mut [Aligned<A2, GenericArray<u8, M>>]
Source§impl<'a, A, A2, T> AsMut<Aligned<A, T>> for &'a mut Aligned<A2, T>where
A: Alignment,
A2: Alignment,
<A as Alignment>::Num: IsLessOrEqual<<A2 as Alignment>::Num, Output = B1>,
impl<'a, A, A2, T> AsMut<Aligned<A, T>> for &'a mut Aligned<A2, T>where
A: Alignment,
A2: Alignment,
<A as Alignment>::Num: IsLessOrEqual<<A2 as Alignment>::Num, Output = B1>,
Source§impl<A, N> AsNeSlice for Aligned<A, GenericArray<u8, N>>
impl<A, N> AsNeSlice for Aligned<A, GenericArray<u8, N>>
Source§fn as_ne_u16_slice(&self) -> &[u16]
fn as_ne_u16_slice(&self) -> &[u16]
Source§fn as_mut_ne_u16_slice(&mut self) -> &mut [u16]
fn as_mut_ne_u16_slice(&mut self) -> &mut [u16]
Source§fn as_ne_u32_slice(&self) -> &[u32]
fn as_ne_u32_slice(&self) -> &[u32]
Source§fn as_mut_ne_u32_slice(&mut self) -> &mut [u32]
fn as_mut_ne_u32_slice(&mut self) -> &mut [u32]
Source§fn as_ne_u64_slice(&self) -> &[u64]
fn as_ne_u64_slice(&self) -> &[u64]
Source§fn as_mut_ne_u64_slice(&mut self) -> &mut [u64]
fn as_mut_ne_u64_slice(&mut self) -> &mut [u64]
Source§impl<'a, A, A2, T> AsRef<Aligned<A, T>> for &'a Aligned<A2, T>where
A: Alignment,
A2: Alignment,
<A as Alignment>::Num: IsLessOrEqual<<A2 as Alignment>::Num, Output = B1>,
impl<'a, A, A2, T> AsRef<Aligned<A, T>> for &'a Aligned<A2, T>where
A: Alignment,
A2: Alignment,
<A as Alignment>::Num: IsLessOrEqual<<A2 as Alignment>::Num, Output = B1>,
Source§impl<A, N> ConstantTimeEq for Aligned<A, GenericArray<u8, N>>
Implement ct_eq for Aligned bytes implementing AsNeSlice
impl<A, N> ConstantTimeEq for Aligned<A, GenericArray<u8, N>>
Implement ct_eq for Aligned bytes implementing AsNeSlice
Typically to invoke ct_eq on Aligned<T>
you can *
it to remove the aligned
wrapper and then invoke ct_eq
, there is no special implementation.
In some cases, like aligned bytes, CtEq can be made faster by operating on 8 bytes at once, and it’s nice to take advantage of that.
Source§impl<A, T, V> FromIterator<V> for Aligned<A, T>where
A: Alignment,
T: FromIterator<V>,
impl<A, T, V> FromIterator<V> for Aligned<A, T>where
A: Alignment,
T: FromIterator<V>,
Source§impl<A, T, N> GenericSequence<T> for Aligned<A, GenericArray<T, N>>where
N: ArrayLength<T>,
A: Alignment,
Implement generic_array::GenericSequence for Aligned sequences
impl<A, T, N> GenericSequence<T> for Aligned<A, GenericArray<T, N>>where
N: ArrayLength<T>,
A: Alignment,
Implement generic_array::GenericSequence for Aligned sequences
Source§type Sequence = Aligned<A, GenericArray<T, N>>
type Sequence = Aligned<A, GenericArray<T, N>>
GenericSequence
Source§fn generate<F>(
f: F,
) -> <Aligned<A, GenericArray<T, N>> as GenericSequence<T>>::Sequence
fn generate<F>( f: F, ) -> <Aligned<A, GenericArray<T, N>> as GenericSequence<T>>::Sequence
Source§impl<'a, A, T> IntoIterator for &'a Aligned<A, T>where
A: Alignment,
&'a T: IntoIterator,
impl<'a, A, T> IntoIterator for &'a Aligned<A, T>where
A: Alignment,
&'a T: IntoIterator,
Source§impl<'a, A, T> IntoIterator for &'a mut Aligned<A, T>where
A: Alignment,
&'a mut T: IntoIterator,
impl<'a, A, T> IntoIterator for &'a mut Aligned<A, T>where
A: Alignment,
&'a mut T: IntoIterator,
Source§impl<A, T> IntoIterator for Aligned<A, T>where
A: Alignment,
T: IntoIterator,
impl<A, T> IntoIterator for Aligned<A, T>where
A: Alignment,
T: IntoIterator,
Source§type Item = <T as IntoIterator>::Item
type Item = <T as IntoIterator>::Item
Source§type IntoIter = <T as IntoIterator>::IntoIter
type IntoIter = <T as IntoIterator>::IntoIter
Source§impl<A, T> Ord for Aligned<A, T>where
A: Alignment,
T: Ord,
impl<A, T> Ord for Aligned<A, T>where
A: Alignment,
T: Ord,
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<A, T> PartialOrd for Aligned<A, T>where
A: Alignment,
T: PartialOrd,
impl<A, T> PartialOrd for Aligned<A, T>where
A: Alignment,
T: PartialOrd,
Source§impl<'a, A, N, K> Split<u8, K> for &'a Aligned<A, GenericArray<u8, N>>where
A: Alignment,
N: ArrayLength<u8> + Sub<K>,
K: ArrayLength<u8> + PartialDiv<<A as Alignment>::Num> + 'static,
<N as Sub<K>>::Output: ArrayLength<u8>,
Implement generic_array::Split api for aligned bytes in a way that preserves aligment info
TODO: This could be more generic, but we didn’t need it yet.
Instead of u8, a generic value T?
impl<'a, A, N, K> Split<u8, K> for &'a Aligned<A, GenericArray<u8, N>>where
A: Alignment,
N: ArrayLength<u8> + Sub<K>,
K: ArrayLength<u8> + PartialDiv<<A as Alignment>::Num> + 'static,
<N as Sub<K>>::Output: ArrayLength<u8>,
Implement generic_array::Split api for aligned bytes in a way that preserves aligment info TODO: This could be more generic, but we didn’t need it yet. Instead of u8, a generic value T?
Source§impl<'a, A, N, K> Split<u8, K> for &'a mut Aligned<A, GenericArray<u8, N>>where
A: Alignment,
N: ArrayLength<u8> + Sub<K>,
K: ArrayLength<u8> + PartialDiv<<A as Alignment>::Num> + 'static,
<N as Sub<K>>::Output: ArrayLength<u8>,
Implement generic_array::Split API for aligned bytes in a way that preserves aligment info
TODO: This could be more generic, but we didn’t need it yet.
Instead of u8, a generic value T?
impl<'a, A, N, K> Split<u8, K> for &'a mut Aligned<A, GenericArray<u8, N>>where
A: Alignment,
N: ArrayLength<u8> + Sub<K>,
K: ArrayLength<u8> + PartialDiv<<A as Alignment>::Num> + 'static,
<N as Sub<K>>::Output: ArrayLength<u8>,
Implement generic_array::Split API for aligned bytes in a way that preserves aligment info TODO: This could be more generic, but we didn’t need it yet. Instead of u8, a generic value T?