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, 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 Length = N
type Length = N
please upgrade to generic-array 1.x
GenericArray associated lengthSource§type Sequence = Aligned<A, GenericArray<T, N>>
type Sequence = Aligned<A, GenericArray<T, N>>
please upgrade to generic-array 1.x
GenericSequenceSource§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
please upgrade to generic-array 1.x
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§type First = &'a Aligned<A, GenericArray<u8, K>>
type First = &'a Aligned<A, GenericArray<u8, K>>
please upgrade to generic-array 1.x
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?
Source§type First = &'a mut Aligned<A, GenericArray<u8, K>>
type First = &'a mut Aligned<A, GenericArray<u8, K>>
please upgrade to generic-array 1.x
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>>
Available on crate feature subtle only.Implement ct_eq for Aligned bytes implementing AsNeSlice
impl<A, N> ConstantTimeEq for Aligned<A, GenericArray<u8, N>>
subtle only.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.