#![allow(incomplete_features)]
#![allow(type_alias_bounds)]
#![feature(allocator_api)]
#![feature(const_evaluatable_checked)]
#![feature(const_generics)]
#![feature(ptr_metadata)]
mod array;
mod dimension;
mod iterator;
mod layout;
mod order;
mod view;
pub use array::{ArrayBase, DenseArray, StaticArray};
pub use dimension::{Dim1, Dim2};
pub use order::Order;
pub use view::{DenseView, StridedView, ViewBase};
pub type View<T, const N: usize> = DenseView<T, N, { Order::ColumnMajor }>;
pub type CView<T, const N: usize> = DenseView<T, N, { Order::RowMajor }>;
pub type Array<T, const N: usize> = DenseArray<T, std::alloc::Global, N, { Order::ColumnMajor }>;
pub type CArray<T, const N: usize> = DenseArray<T, std::alloc::Global, N, { Order::RowMajor }>;
pub type SArray1<T, const S0: usize> = StaticArray<T, Dim1<S0>, 1, { Order::ColumnMajor }>;
pub type SCArray1<T, const S0: usize> = StaticArray<T, Dim1<S0>, 1, { Order::RowMajor }>;
pub type SArray2<T, const S0: usize, const S1: usize> =
StaticArray<T, Dim2<S0, S1>, 2, { Order::ColumnMajor }>;
pub type SCArray2<T, const S0: usize, const S1: usize> =
StaticArray<T, Dim2<S0, S1>, 2, { Order::RowMajor }>;