1pub mod abstract_operator;
4pub mod accessors;
5pub mod base_operations;
6pub mod data_container;
7#[cfg(feature = "mpi")]
8pub mod distributed;
9pub mod io;
10pub mod iterators;
11pub mod linalg;
12pub mod linear_space;
13pub mod number_relations;
14pub mod number_traits;
15pub mod rlst_num;
16pub mod sparse;
17
18pub use accessors::*;
19pub use base_operations::*;
20pub use data_container::*;
21#[cfg(feature = "mpi")]
22pub use distributed::*;
23pub use io::*;
24pub use iterators::*;
25pub use linalg::*;
26pub use linear_space::*;
27pub use number_relations::*;
28pub use number_traits::*;
29pub use rlst_num::*;
30pub use sparse::*;
31
32pub trait ValueArrayImpl<Item, const NDIM: usize>:
34 UnsafeRandom1DAccessByValue<Item = Item>
35 + UnsafeRandomAccessByValue<NDIM, Item = Item>
36 + Shape<NDIM>
37 + ContainerType
38{
39}
40
41impl<A, Item, const NDIM: usize> ValueArrayImpl<Item, NDIM> for A where
42 A: UnsafeRandom1DAccessByValue<Item = Item>
43 + UnsafeRandomAccessByValue<NDIM, Item = Item>
44 + Shape<NDIM>
45 + ContainerType
46{
47}
48
49pub trait RefArrayImpl<Item, const NDIM: usize>:
51 ValueArrayImpl<Item, NDIM>
52 + UnsafeRandom1DAccessByRef<Item = Item>
53 + UnsafeRandomAccessByRef<NDIM, Item = Item>
54{
55}
56
57impl<A, Item, const NDIM: usize> RefArrayImpl<Item, NDIM> for A where
58 A: ValueArrayImpl<Item, NDIM>
59 + UnsafeRandom1DAccessByRef<Item = Item>
60 + UnsafeRandomAccessByRef<NDIM, Item = Item>
61{
62}
63
64pub trait MutableArrayImpl<Item, const NDIM: usize>:
66 RefArrayImpl<Item, NDIM>
67 + UnsafeRandom1DAccessMut<Item = Item>
68 + UnsafeRandomAccessMut<NDIM, Item = Item>
69{
70}
71
72impl<A, Item, const NDIM: usize> MutableArrayImpl<Item, NDIM> for A where
73 A: RefArrayImpl<Item, NDIM>
74 + UnsafeRandom1DAccessMut<Item = Item>
75 + UnsafeRandomAccessMut<NDIM, Item = Item>
76{
77}
78
79pub trait RawAccessArrayImpl<Item, const NDIM: usize>:
81 ValueArrayImpl<Item, NDIM> + RawAccess<Item = Item> + Stride<NDIM>
82{
83}
84
85impl<A, Item, const NDIM: usize> RawAccessArrayImpl<Item, NDIM> for A where
86 A: ValueArrayImpl<Item, NDIM> + RawAccess<Item = Item> + Stride<NDIM>
87{
88}
89
90pub trait MutableRawAccessArrayImpl<Item, const NDIM: usize>:
92 RawAccessArrayImpl<Item, NDIM> + RawAccessMut<Item = Item>
93{
94}
95
96impl<A, Item, const NDIM: usize> MutableRawAccessArrayImpl<Item, NDIM> for A where
97 A: RawAccessArrayImpl<Item, NDIM> + RawAccessMut<Item = Item>
98{
99}