@@ -12,10 +12,10 @@ use std::mem::MaybeUninit;
12
12
13
13
use crate :: imp_prelude:: * ;
14
14
15
- use crate :: { Baseiter , ElementsBase , ElementsBaseMut , Iter , IterMut } ;
16
-
17
15
use crate :: dimension:: offset_from_low_addr_ptr_to_logical_ptr;
18
- use crate :: iter:: { self , AxisIter , AxisIterMut } ;
16
+ use crate :: iter:: { self , Iter , IterMut , AxisIter , AxisIterMut } ;
17
+ use crate :: iterators:: base:: { Baseiter , ElementsBase , ElementsBaseMut , OrderOption , PreserveOrder ,
18
+ ArbitraryOrder , NoOptimization } ;
19
19
use crate :: math_cell:: MathCell ;
20
20
use crate :: IndexLonger ;
21
21
@@ -188,14 +188,25 @@ impl<'a, A, D> ArrayView<'a, A, D>
188
188
where
189
189
D : Dimension ,
190
190
{
191
+ /// Create a base iter fromt the view with the given order option
192
+ #[ inline]
193
+ pub ( crate ) fn into_base_iter < F : OrderOption > ( self ) -> Baseiter < A , D > {
194
+ unsafe { Baseiter :: new_with_order :: < F > ( self . ptr . as_ptr ( ) , self . dim , self . strides ) }
195
+ }
196
+
197
+ #[ inline]
198
+ pub ( crate ) fn into_elements_base_keep_dims ( self ) -> ElementsBase < ' a , A , D > {
199
+ ElementsBase :: new :: < NoOptimization > ( self )
200
+ }
201
+
191
202
#[ inline]
192
- pub ( crate ) fn into_base_iter ( self ) -> Baseiter < A , D > {
193
- unsafe { Baseiter :: new ( self . ptr . as_ptr ( ) , self . dim , self . strides ) }
203
+ pub ( crate ) fn into_elements_base_preserve_order ( self ) -> ElementsBase < ' a , A , D > {
204
+ ElementsBase :: new :: < PreserveOrder > ( self )
194
205
}
195
206
196
207
#[ inline]
197
- pub ( crate ) fn into_elements_base ( self ) -> ElementsBase < ' a , A , D > {
198
- ElementsBase :: new ( self )
208
+ pub ( crate ) fn into_elements_base_any_order ( self ) -> ElementsBase < ' a , A , D > {
209
+ ElementsBase :: new :: < ArbitraryOrder > ( self )
199
210
}
200
211
201
212
pub ( crate ) fn into_iter_ ( self ) -> Iter < ' a , A , D > {
@@ -227,16 +238,28 @@ where
227
238
unsafe { RawArrayViewMut :: new ( self . ptr , self . dim , self . strides ) }
228
239
}
229
240
241
+ /// Create a base iter fromt the view with the given order option
230
242
#[ inline]
231
- pub ( crate ) fn into_base_iter ( self ) -> Baseiter < A , D > {
232
- unsafe { Baseiter :: new ( self . ptr . as_ptr ( ) , self . dim , self . strides ) }
243
+ pub ( crate ) fn into_base_iter < F : OrderOption > ( self ) -> Baseiter < A , D > {
244
+ unsafe { Baseiter :: new_with_order :: < F > ( self . ptr . as_ptr ( ) , self . dim , self . strides ) }
233
245
}
234
246
235
247
#[ inline]
236
- pub ( crate ) fn into_elements_base ( self ) -> ElementsBaseMut < ' a , A , D > {
237
- ElementsBaseMut :: new ( self )
248
+ pub ( crate ) fn into_elements_base_keep_dims ( self ) -> ElementsBaseMut < ' a , A , D > {
249
+ ElementsBaseMut :: new :: < NoOptimization > ( self )
238
250
}
239
251
252
+ #[ inline]
253
+ pub ( crate ) fn into_elements_base_preserve_order ( self ) -> ElementsBaseMut < ' a , A , D > {
254
+ ElementsBaseMut :: new :: < PreserveOrder > ( self )
255
+ }
256
+
257
+ #[ inline]
258
+ pub ( crate ) fn into_elements_base_any_order ( self ) -> ElementsBaseMut < ' a , A , D > {
259
+ ElementsBaseMut :: new :: < ArbitraryOrder > ( self )
260
+ }
261
+
262
+
240
263
/// Return the array’s data as a slice, if it is contiguous and in standard order.
241
264
/// Otherwise return self in the Err branch of the result.
242
265
pub ( crate ) fn try_into_slice ( self ) -> Result < & ' a mut [ A ] , Self > {
0 commit comments