@@ -10,9 +10,9 @@ use alloc::slice;
10
10
11
11
use crate :: imp_prelude:: * ;
12
12
13
- use crate :: { Baseiter , ElementsBase , ElementsBaseMut , Iter , IterMut } ;
14
-
15
- use crate :: iter :: { self , AxisIter , AxisIterMut } ;
13
+ use crate :: iter :: { self , Iter , IterMut , AxisIter , AxisIterMut } ;
14
+ use crate :: iterators :: base :: { Baseiter , ElementsBase , ElementsBaseMut , OrderOption , PreserveOrder ,
15
+ ArbitraryOrder , NoOptimization } ;
16
16
use crate :: math_cell:: MathCell ;
17
17
use crate :: IndexLonger ;
18
18
@@ -140,14 +140,25 @@ impl<'a, A, D> ArrayView<'a, A, D>
140
140
where
141
141
D : Dimension ,
142
142
{
143
+ /// Create a base iter fromt the view with the given order option
144
+ #[ inline]
145
+ pub ( crate ) fn into_base_iter < F : OrderOption > ( self ) -> Baseiter < A , D > {
146
+ unsafe { Baseiter :: new_with_order :: < F > ( self . ptr . as_ptr ( ) , self . dim , self . strides ) }
147
+ }
148
+
149
+ #[ inline]
150
+ pub ( crate ) fn into_elements_base_keep_dims ( self ) -> ElementsBase < ' a , A , D > {
151
+ ElementsBase :: new :: < NoOptimization > ( self )
152
+ }
153
+
143
154
#[ inline]
144
- pub ( crate ) fn into_base_iter ( self ) -> Baseiter < A , D > {
145
- unsafe { Baseiter :: new ( self . ptr . as_ptr ( ) , self . dim , self . strides ) }
155
+ pub ( crate ) fn into_elements_base_preserve_order ( self ) -> ElementsBase < ' a , A , D > {
156
+ ElementsBase :: new :: < PreserveOrder > ( self )
146
157
}
147
158
148
159
#[ inline]
149
- pub ( crate ) fn into_elements_base ( self ) -> ElementsBase < ' a , A , D > {
150
- ElementsBase :: new ( self )
160
+ pub ( crate ) fn into_elements_base_any_order ( self ) -> ElementsBase < ' a , A , D > {
161
+ ElementsBase :: new :: < ArbitraryOrder > ( self )
151
162
}
152
163
153
164
pub ( crate ) fn into_iter_ ( self ) -> Iter < ' a , A , D > {
@@ -179,16 +190,28 @@ where
179
190
unsafe { RawArrayViewMut :: new ( self . ptr , self . dim , self . strides ) }
180
191
}
181
192
193
+ /// Create a base iter fromt the view with the given order option
182
194
#[ inline]
183
- pub ( crate ) fn into_base_iter ( self ) -> Baseiter < A , D > {
184
- unsafe { Baseiter :: new ( self . ptr . as_ptr ( ) , self . dim , self . strides ) }
195
+ pub ( crate ) fn into_base_iter < F : OrderOption > ( self ) -> Baseiter < A , D > {
196
+ unsafe { Baseiter :: new_with_order :: < F > ( self . ptr . as_ptr ( ) , self . dim , self . strides ) }
185
197
}
186
198
187
199
#[ inline]
188
- pub ( crate ) fn into_elements_base ( self ) -> ElementsBaseMut < ' a , A , D > {
189
- ElementsBaseMut :: new ( self )
200
+ pub ( crate ) fn into_elements_base_keep_dims ( self ) -> ElementsBaseMut < ' a , A , D > {
201
+ ElementsBaseMut :: new :: < NoOptimization > ( self )
190
202
}
191
203
204
+ #[ inline]
205
+ pub ( crate ) fn into_elements_base_preserve_order ( self ) -> ElementsBaseMut < ' a , A , D > {
206
+ ElementsBaseMut :: new :: < PreserveOrder > ( self )
207
+ }
208
+
209
+ #[ inline]
210
+ pub ( crate ) fn into_elements_base_any_order ( self ) -> ElementsBaseMut < ' a , A , D > {
211
+ ElementsBaseMut :: new :: < ArbitraryOrder > ( self )
212
+ }
213
+
214
+
192
215
/// Return the array’s data as a slice, if it is contiguous and in standard order.
193
216
/// Otherwise return self in the Err branch of the result.
194
217
pub ( crate ) fn try_into_slice ( self ) -> Result < & ' a mut [ A ] , Self > {
0 commit comments