@@ -13,7 +13,7 @@ use std::mem::MaybeUninit;
13
13
14
14
use crate :: imp_prelude:: * ;
15
15
16
- use crate :: { Baseiter , ElementsBase , ElementsBaseMut , Iter , IterMut } ;
16
+ use crate :: { Baseiter , ElementsBase , ElementsBaseMut } ;
17
17
18
18
use crate :: dimension:: offset_from_low_addr_ptr_to_logical_ptr;
19
19
use crate :: iter:: { self , AxisIter , AxisIterMut } ;
@@ -213,7 +213,7 @@ where D: Dimension
213
213
}
214
214
}
215
215
216
- /// Private array view methods
216
+ /// Methods for iterating over array views.
217
217
impl < ' a , A , D > ArrayView < ' a , A , D >
218
218
where D : Dimension
219
219
{
@@ -229,21 +229,47 @@ where D: Dimension
229
229
ElementsBase :: new ( self )
230
230
}
231
231
232
- pub ( crate ) fn into_iter_ ( self ) -> Iter < ' a , A , D >
232
+ /// Convert into an outer iterator for this view.
233
+ ///
234
+ /// Unlike [ArrayRef::outer_iter], this methods preserves the lifetime of the data,
235
+ /// not the view itself.
236
+ pub fn into_outer_iter ( self ) -> iter:: AxisIter < ' a , A , D :: Smaller >
237
+ where D : RemoveAxis
233
238
{
234
- Iter :: new ( self )
239
+ AxisIter :: new ( self , Axis ( 0 ) )
235
240
}
236
241
237
- /// Return an outer iterator for this view.
238
- #[ doc( hidden) ] // not official
239
- #[ deprecated( note = "This method will be replaced." ) ]
240
- pub fn into_outer_iter ( self ) -> iter:: AxisIter < ' a , A , D :: Smaller >
242
+ /// Convert into an indexed iterator.
243
+ ///
244
+ /// Unlike [ArrayRef::indexed_iter], this methods preserves the lifetime of the data,
245
+ /// not the view itself.
246
+ pub fn into_indexed_iter ( self ) -> iter:: IndexedIter < ' a , A , D >
247
+ {
248
+ iter:: IndexedIter :: new ( self . into_elements_base ( ) )
249
+ }
250
+
251
+ /// Convert into an iterator over an `axis`.
252
+ ///
253
+ /// Unlike [ArrayRef::axis_iter], this methods preserves the lifetime of the data,
254
+ /// not the view itself.
255
+ pub fn into_axis_iter ( self , axis : Axis ) -> iter:: AxisIter < ' a , A , D :: Smaller >
241
256
where D : RemoveAxis
242
257
{
243
- AxisIter :: new ( self , Axis ( 0 ) )
258
+ AxisIter :: new ( self , axis)
259
+ }
260
+
261
+ /// Convert into an iterator over an `axis` by chunks.
262
+ ///
263
+ /// Unlike [`ArrayRef::axis_chunks_iter`], this methods preserves the lifetime of the data,
264
+ /// not the view itself.
265
+ pub fn into_axis_chunks_iter ( self , axis : Axis , chunk_size : usize ) -> iter:: AxisChunksIter < ' a , A , D >
266
+ where D : RemoveAxis
267
+ {
268
+ iter:: AxisChunksIter :: new ( self , axis, chunk_size)
244
269
}
245
270
}
246
271
272
+ /// Methods for iterating over mutable array views.
247
273
impl < ' a , A , D > ArrayViewMut < ' a , A , D >
248
274
where D : Dimension
249
275
{
@@ -294,17 +320,81 @@ where D: Dimension
294
320
}
295
321
}
296
322
297
- pub ( crate ) fn into_iter_ ( self ) -> IterMut < ' a , A , D >
323
+ /// Convert into an outer iterator for this view.
324
+ ///
325
+ /// Unlike [ArrayRef::outer_iter], this methods preserves the lifetime of the data,
326
+ /// not the view itself.
327
+ pub fn into_outer_iter ( self ) -> iter:: AxisIter < ' a , A , D :: Smaller >
328
+ where D : RemoveAxis
329
+ {
330
+ AxisIter :: new ( self . into_view ( ) , Axis ( 0 ) )
331
+ }
332
+
333
+ /// Convert into an indexed iterator.
334
+ ///
335
+ /// Unlike [ArrayRef::indexed_iter], this methods preserves the lifetime of the data,
336
+ /// not the view itself.
337
+ pub fn into_indexed_iter ( self ) -> iter:: IndexedIter < ' a , A , D >
338
+ {
339
+ iter:: IndexedIter :: new ( self . into_view ( ) . into_elements_base ( ) )
340
+ }
341
+
342
+ /// Convert into an iterator over an `axis`.
343
+ ///
344
+ /// Unlike [ArrayRef::axis_iter], this methods preserves the lifetime of the data,
345
+ /// not the view itself.
346
+ pub fn into_axis_iter ( self , axis : Axis ) -> iter:: AxisIter < ' a , A , D :: Smaller >
347
+ where D : RemoveAxis
348
+ {
349
+ AxisIter :: new ( self . into_view ( ) , axis)
350
+ }
351
+
352
+ /// Convert into an iterator over an `axis` by chunks.
353
+ ///
354
+ /// Unlike [`ArrayRef::axis_chunks_iter`], this methods preserves the lifetime of the data,
355
+ /// not the view itself.
356
+ pub fn into_axis_chunks_iter ( self , axis : Axis , chunk_size : usize ) -> iter:: AxisChunksIter < ' a , A , D >
357
+ where D : RemoveAxis
298
358
{
299
- IterMut :: new ( self )
359
+ iter :: AxisChunksIter :: new ( self . into_view ( ) , axis , chunk_size )
300
360
}
301
361
302
- /// Return an outer iterator for this view.
303
- #[ doc( hidden) ] // not official
304
- #[ deprecated( note = "This method will be replaced." ) ]
305
- pub fn into_outer_iter ( self ) -> iter:: AxisIterMut < ' a , A , D :: Smaller >
362
+ /// Convert into an outer iterator for this view.
363
+ ///
364
+ /// Unlike [ArrayRef::outer_iter_mut], this methods preserves the lifetime of the data,
365
+ /// not the view itself.
366
+ pub fn into_outer_iter_mut ( self ) -> iter:: AxisIterMut < ' a , A , D :: Smaller >
306
367
where D : RemoveAxis
307
368
{
308
369
AxisIterMut :: new ( self , Axis ( 0 ) )
309
370
}
371
+
372
+ /// Convert into an indexed iterator.
373
+ ///
374
+ /// Unlike [ArrayRef::indexed_iter_mut], this methods preserves the lifetime of the data,
375
+ /// not the view itself.
376
+ pub fn into_indexed_iter_mut ( self ) -> iter:: IndexedIterMut < ' a , A , D >
377
+ {
378
+ iter:: IndexedIterMut :: new ( self . into_elements_base ( ) )
379
+ }
380
+
381
+ /// Convert into an iterator over an `axis`.
382
+ ///
383
+ /// Unlike [ArrayRef::axis_iter_mut], this methods preserves the lifetime of the data,
384
+ /// not the view itself.
385
+ pub fn into_axis_iter_mut ( self , axis : Axis ) -> iter:: AxisIterMut < ' a , A , D :: Smaller >
386
+ where D : RemoveAxis
387
+ {
388
+ AxisIterMut :: new ( self , axis)
389
+ }
390
+
391
+ /// Convert into an iterator over an `axis` by chunks.
392
+ ///
393
+ /// Unlike [`ArrayRef::axis_chunks_iter_mut`], this methods preserves the lifetime of the data,
394
+ /// not the view itself.
395
+ pub fn into_axis_chunks_iter_mut ( self , axis : Axis , chunk_size : usize ) -> iter:: AxisChunksIterMut < ' a , A , D >
396
+ where D : RemoveAxis
397
+ {
398
+ iter:: AxisChunksIterMut :: new ( self , axis, chunk_size)
399
+ }
310
400
}
0 commit comments