ferray_core/array/aliases.rs
1// ferray-core: Type aliases for common array types (REQ-2)
2
3use num_complex::Complex;
4
5use super::arc::ArcArray;
6use super::cow::CowArray;
7use super::owned::Array;
8use super::view::ArrayView;
9use super::view_mut::ArrayViewMut;
10use crate::dimension::{Ix1, Ix2, Ix3, Ix4, Ix5, Ix6, IxDyn};
11
12// ---------------------------------------------------------------------------
13// Generic aliases by rank
14// ---------------------------------------------------------------------------
15
16/// 1-dimensional owned array.
17pub type Array1<T> = Array<T, Ix1>;
18/// 2-dimensional owned array.
19pub type Array2<T> = Array<T, Ix2>;
20/// 3-dimensional owned array.
21pub type Array3<T> = Array<T, Ix3>;
22/// 4-dimensional owned array.
23pub type Array4<T> = Array<T, Ix4>;
24/// 5-dimensional owned array.
25pub type Array5<T> = Array<T, Ix5>;
26/// 6-dimensional owned array.
27pub type Array6<T> = Array<T, Ix6>;
28/// Dynamic-rank owned array.
29pub type ArrayD<T> = Array<T, IxDyn>;
30
31// ---------------------------------------------------------------------------
32// Generic view aliases by rank
33// ---------------------------------------------------------------------------
34
35/// 1-dimensional immutable view.
36pub type ArrayView1<'a, T> = ArrayView<'a, T, Ix1>;
37/// 2-dimensional immutable view.
38pub type ArrayView2<'a, T> = ArrayView<'a, T, Ix2>;
39/// 3-dimensional immutable view.
40pub type ArrayView3<'a, T> = ArrayView<'a, T, Ix3>;
41/// Dynamic-rank immutable view.
42pub type ArrayViewD<'a, T> = ArrayView<'a, T, IxDyn>;
43
44/// 1-dimensional mutable view.
45pub type ArrayViewMut1<'a, T> = ArrayViewMut<'a, T, Ix1>;
46/// 2-dimensional mutable view.
47pub type ArrayViewMut2<'a, T> = ArrayViewMut<'a, T, Ix2>;
48/// 3-dimensional mutable view.
49pub type ArrayViewMut3<'a, T> = ArrayViewMut<'a, T, Ix3>;
50/// Dynamic-rank mutable view.
51pub type ArrayViewMutD<'a, T> = ArrayViewMut<'a, T, IxDyn>;
52
53// ---------------------------------------------------------------------------
54// ArcArray aliases
55// ---------------------------------------------------------------------------
56
57/// 1-dimensional reference-counted array.
58pub type ArcArray1<T> = ArcArray<T, Ix1>;
59/// 2-dimensional reference-counted array.
60pub type ArcArray2<T> = ArcArray<T, Ix2>;
61/// Dynamic-rank reference-counted array.
62pub type ArcArrayD<T> = ArcArray<T, IxDyn>;
63
64// ---------------------------------------------------------------------------
65// CowArray aliases
66// ---------------------------------------------------------------------------
67
68/// 1-dimensional copy-on-write array.
69pub type CowArray1<'a, T> = CowArray<'a, T, Ix1>;
70/// 2-dimensional copy-on-write array.
71pub type CowArray2<'a, T> = CowArray<'a, T, Ix2>;
72/// Dynamic-rank copy-on-write array.
73pub type CowArrayD<'a, T> = CowArray<'a, T, IxDyn>;
74
75// ---------------------------------------------------------------------------
76// Float-specialized aliases (REQ-2)
77// ---------------------------------------------------------------------------
78
79/// `Array1<f32>`
80pub type F32Array1 = Array1<f32>;
81/// `Array2<f32>`
82pub type F32Array2 = Array2<f32>;
83/// `Array3<f32>`
84pub type F32Array3 = Array3<f32>;
85/// `ArrayD<f32>`
86pub type F32ArrayD = ArrayD<f32>;
87
88/// `Array1<f64>`
89pub type F64Array1 = Array1<f64>;
90/// `Array2<f64>`
91pub type F64Array2 = Array2<f64>;
92/// `Array3<f64>`
93pub type F64Array3 = Array3<f64>;
94/// `ArrayD<f64>`
95pub type F64ArrayD = ArrayD<f64>;
96
97// ---------------------------------------------------------------------------
98// Integer-specialized aliases
99// ---------------------------------------------------------------------------
100
101/// `Array1<i32>`
102pub type I32Array1 = Array1<i32>;
103/// `Array2<i32>`
104pub type I32Array2 = Array2<i32>;
105/// `Array1<i64>`
106pub type I64Array1 = Array1<i64>;
107/// `Array2<i64>`
108pub type I64Array2 = Array2<i64>;
109
110/// `Array1<u8>`
111pub type U8Array1 = Array1<u8>;
112/// `Array2<u8>`
113pub type U8Array2 = Array2<u8>;
114
115// ---------------------------------------------------------------------------
116// Complex-specialized aliases
117// ---------------------------------------------------------------------------
118
119/// `Array1<Complex<f32>>`
120pub type C32Array1 = Array1<Complex<f32>>;
121/// `Array2<Complex<f32>>`
122pub type C32Array2 = Array2<Complex<f32>>;
123/// `Array1<Complex<f64>>`
124pub type C64Array1 = Array1<Complex<f64>>;
125/// `Array2<Complex<f64>>`
126pub type C64Array2 = Array2<Complex<f64>>;
127
128// ---------------------------------------------------------------------------
129// Bool aliases
130// ---------------------------------------------------------------------------
131
132/// `Array1<bool>`
133pub type BoolArray1 = Array1<bool>;
134/// `Array2<bool>`
135pub type BoolArray2 = Array2<bool>;
136/// `ArrayD<bool>`
137pub type BoolArrayD = ArrayD<bool>;