#![allow(non_camel_case_types)]
use super::names::{
I0,I1,I2,I3,I4,I5,I6,I7,
I8,I9,I10,I11,I12,I13,I14,I15,
I16,I17,I18,I19,I20,I21,I22,I23,
I24,I25,I26,I27,I28,I29,I30,I31,
};
use crate::IntoFieldMut;
macro_rules! declare_array_traits {
(
$((
$trait_name:ident
[$($super_trait:ident)*]
[$($field:ident)*]
))*
) => (
$(
/// A structural alias for an array of this size
pub trait $trait_name<T>:
$($super_trait<T>+)*
$(IntoFieldMut<$field,Ty=T> +)*
{}
impl<This,T> $trait_name<T> for This
where
Self:
$($super_trait<T>+)*
$(IntoFieldMut<$field,Ty=T> +)*
{}
)*
)
}
declare_array_traits!{
(Array_0_8 [] [I0 I1 I2 I3 I4 I5 I6 I7 ] )
(Array_8_16 [Array_0_8 ] [I8 I9 I10 I11 I12 I13 I14 I15 ] )
(Array_16_24 [Array_8_16 ] [I16 I17 I18 I19 I20 I21 I22 I23 ] )
(Array0 [] [] )
(Array1 [] [I0 ] )
(Array2 [] [I0 I1 ] )
(Array3 [] [I0 I1 I2 ] )
(Array4 [] [I0 I1 I2 I3 ] )
(Array5 [] [I0 I1 I2 I3 I4 ] )
(Array6 [] [I0 I1 I2 I3 I4 I5 ] )
(Array7 [] [I0 I1 I2 I3 I4 I5 I6 ] )
(Array8 [Array_0_8 ] [] )
(Array9 [Array_0_8 ] [I8 ] )
(Array10 [Array_0_8 ] [I8 I9 ] )
(Array11 [Array_0_8 ] [I8 I9 I10 ] )
(Array12 [Array_0_8 ] [I8 I9 I10 I11 ] )
(Array13 [Array_0_8 ] [I8 I9 I10 I11 I12 ] )
(Array14 [Array_0_8 ] [I8 I9 I10 I11 I12 I13 ] )
(Array15 [Array_0_8 ] [I8 I9 I10 I11 I12 I13 I14 ] )
(Array16 [Array_8_16 ] [] )
(Array17 [Array_8_16 ] [I16 ] )
(Array18 [Array_8_16 ] [I16 I17 ] )
(Array19 [Array_8_16 ] [I16 I17 I18 ] )
(Array20 [Array_8_16 ] [I16 I17 I18 I19 ] )
(Array21 [Array_8_16 ] [I16 I17 I18 I19 I20 ] )
(Array22 [Array_8_16 ] [I16 I17 I18 I19 I20 I21 ] )
(Array23 [Array_8_16 ] [I16 I17 I18 I19 I20 I21 I22 ] )
(Array24 [Array_16_24 ] [] )
(Array25 [Array_16_24 ] [I24 ] )
(Array26 [Array_16_24 ] [I24 I25 ] )
(Array27 [Array_16_24 ] [I24 I25 I26 ] )
(Array28 [Array_16_24 ] [I24 I25 I26 I27 ] )
(Array29 [Array_16_24 ] [I24 I25 I26 I27 I28 ] )
(Array30 [Array_16_24 ] [I24 I25 I26 I27 I28 I29 ] )
(Array31 [Array_16_24 ] [I24 I25 I26 I27 I28 I29 I30 ] )
(Array32 [Array_16_24 ] [I24 I25 I26 I27 I28 I29 I30 I31 ] )
}