21
21
//! // The most recent written element is a four.
22
22
//! assert_eq!(buf.recent(), Some(&4));
23
23
//!
24
- //! // To access all elements in an unspecified order, use `as_slice ()`.
25
- //! for el in buf.as_slice () {
24
+ //! // To access all elements in an unspecified order, use `as_unordered_slice ()`.
25
+ //! for el in buf.as_unordered_slice () {
26
26
//! println!("{:?}", el);
27
27
//! }
28
28
//!
29
29
//! // Now we can prepare an average of all values, which comes out to 4.
30
- //! let avg = buf.as_slice ().iter().sum::<usize>() / buf.len();
30
+ //! let avg = buf.as_unordered_slice ().iter().sum::<usize>() / buf.len();
31
31
//! assert_eq!(avg, 4);
32
32
//! ```
33
33
@@ -178,13 +178,13 @@ pub struct HistoryBufInner<T, S: HistoryBufStorage<T> + ?Sized> {
178
178
/// // The most recent written element is a four.
179
179
/// assert_eq!(buf.recent(), Some(&4));
180
180
///
181
- /// // To access all elements in an unspecified order, use `as_slice ()`.
182
- /// for el in buf.as_slice () {
181
+ /// // To access all elements in an unspecified order, use `as_unordered_slice ()`.
182
+ /// for el in buf.as_unordered_slice () {
183
183
/// println!("{:?}", el);
184
184
/// }
185
185
///
186
186
/// // Now we can prepare an average of all values, which comes out to 4.
187
- /// let avg = buf.as_slice ().iter().sum::<usize>() / buf.len();
187
+ /// let avg = buf.as_unordered_slice ().iter().sum::<usize>() / buf.len();
188
188
/// assert_eq!(avg, 4);
189
189
/// ```
190
190
pub type HistoryBuf < T , const N : usize > = HistoryBufInner < T , OwnedHistoryBufStorage < T , N > > ;
@@ -211,13 +211,13 @@ pub type HistoryBuf<T, const N: usize> = HistoryBufInner<T, OwnedHistoryBufStora
211
211
/// // The most recent written element is a four.
212
212
/// assert_eq!(buf.recent(), Some(&4));
213
213
///
214
- /// // To access all elements in an unspecified order, use `as_slice ()`.
215
- /// for el in buf.as_slice () {
214
+ /// // To access all elements in an unspecified order, use `as_unordered_slice ()`.
215
+ /// for el in buf.as_unordered_slice () {
216
216
/// println!("{:?}", el);
217
217
/// }
218
218
///
219
219
/// // Now we can prepare an average of all values, which comes out to 4.
220
- /// let avg = buf.as_slice ().iter().sum::<usize>() / buf.len();
220
+ /// let avg = buf.as_unordered_slice ().iter().sum::<usize>() / buf.len();
221
221
/// assert_eq!(avg, 4);
222
222
/// ```
223
223
pub type HistoryBufView < T > = HistoryBufInner < T , ViewHistoryBufStorage < T > > ;
@@ -269,7 +269,7 @@ where
269
269
/// // Allocate a 16-element buffer on the stack
270
270
/// let mut x: HistoryBuf<u8, 16> = HistoryBuf::new_with(4);
271
271
/// // All elements are four
272
- /// assert_eq!(x.as_slice (), [4; 16]);
272
+ /// assert_eq!(x.as_unordered_slice (), [4; 16]);
273
273
/// ```
274
274
#[ inline]
275
275
pub fn new_with ( t : T ) -> Self {
@@ -478,7 +478,16 @@ impl<T, S: HistoryBufStorage<T> + ?Sized> HistoryBufInner<T, S> {
478
478
479
479
/// Returns the array slice backing the buffer, without keeping track
480
480
/// of the write position. Therefore, the element order is unspecified.
481
+ #[ deprecated(
482
+ note = "as_slice's name did not explicitly state unspecified ordering of elements. Use as_unordered_slice instead."
483
+ ) ]
481
484
pub fn as_slice ( & self ) -> & [ T ] {
485
+ self . as_unordered_slice ( )
486
+ }
487
+
488
+ /// Returns the array slice backing the buffer, without keeping track
489
+ /// of the write position. Therefore, the element order is unspecified.
490
+ pub fn as_unordered_slice ( & self ) -> & [ T ] {
482
491
unsafe { slice:: from_raw_parts ( self . data . borrow ( ) . as_ptr ( ) . cast ( ) , self . len ( ) ) }
483
492
}
484
493
@@ -495,7 +504,7 @@ impl<T, S: HistoryBufStorage<T> + ?Sized> HistoryBufInner<T, S> {
495
504
/// assert_eq!(buffer.as_slices(), (&[1, 2, 3][..], &[4, 5, 6][..]));
496
505
/// ```
497
506
pub fn as_slices ( & self ) -> ( & [ T ] , & [ T ] ) {
498
- let buffer = self . as_slice ( ) ;
507
+ let buffer = self . as_unordered_slice ( ) ;
499
508
500
509
if self . filled {
501
510
( & buffer[ self . write_at ..] , & buffer[ ..self . write_at ] )
@@ -556,7 +565,12 @@ where
556
565
{
557
566
fn clone ( & self ) -> Self {
558
567
let mut ret = Self :: new ( ) ;
559
- for ( new, old) in ret. data . borrow_mut ( ) . iter_mut ( ) . zip ( self . as_slice ( ) ) {
568
+ for ( new, old) in ret
569
+ . data
570
+ . borrow_mut ( )
571
+ . iter_mut ( )
572
+ . zip ( self . as_unordered_slice ( ) )
573
+ {
560
574
new. write ( old. clone ( ) ) ;
561
575
}
562
576
ret. filled = self . filled ;
@@ -574,7 +588,7 @@ impl<T, S: HistoryBufStorage<T> + ?Sized> Drop for HistoryBufInner<T, S> {
574
588
impl < T , S : HistoryBufStorage < T > + ?Sized > AsRef < [ T ] > for HistoryBufInner < T , S > {
575
589
#[ inline]
576
590
fn as_ref ( & self ) -> & [ T ] {
577
- self . as_slice ( )
591
+ self . as_unordered_slice ( )
578
592
}
579
593
}
580
594
@@ -583,7 +597,7 @@ where
583
597
T : fmt:: Debug ,
584
598
{
585
599
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
586
- <[ T ] as fmt:: Debug >:: fmt ( self . as_slice ( ) , f)
600
+ <[ T ] as fmt:: Debug >:: fmt ( self . as_unordered_slice ( ) , f)
587
601
}
588
602
}
589
603
@@ -650,11 +664,11 @@ mod tests {
650
664
fn new ( ) {
651
665
let x: HistoryBuf < u8 , 4 > = HistoryBuf :: new_with ( 1 ) ;
652
666
assert_eq ! ( x. len( ) , 4 ) ;
653
- assert_eq ! ( x. as_slice ( ) , [ 1 ; 4 ] ) ;
667
+ assert_eq ! ( x. as_unordered_slice ( ) , [ 1 ; 4 ] ) ;
654
668
assert ! ( x. is_full( ) ) ;
655
669
656
670
let x: HistoryBuf < u8 , 4 > = HistoryBuf :: new ( ) ;
657
- assert_eq ! ( x. as_slice ( ) , [ ] ) ;
671
+ assert_eq ! ( x. as_unordered_slice ( ) , [ ] ) ;
658
672
assert ! ( !x. is_full( ) ) ;
659
673
}
660
674
@@ -663,33 +677,33 @@ mod tests {
663
677
let mut x: HistoryBuf < u8 , 4 > = HistoryBuf :: new ( ) ;
664
678
x. write ( 1 ) ;
665
679
x. write ( 4 ) ;
666
- assert_eq ! ( x. as_slice ( ) , [ 1 , 4 ] ) ;
680
+ assert_eq ! ( x. as_unordered_slice ( ) , [ 1 , 4 ] ) ;
667
681
668
682
x. write ( 5 ) ;
669
683
x. write ( 6 ) ;
670
684
x. write ( 10 ) ;
671
- assert_eq ! ( x. as_slice ( ) , [ 10 , 4 , 5 , 6 ] ) ;
685
+ assert_eq ! ( x. as_unordered_slice ( ) , [ 10 , 4 , 5 , 6 ] ) ;
672
686
673
687
x. extend ( [ 11 , 12 ] . iter ( ) ) ;
674
- assert_eq ! ( x. as_slice ( ) , [ 10 , 11 , 12 , 6 ] ) ;
688
+ assert_eq ! ( x. as_unordered_slice ( ) , [ 10 , 11 , 12 , 6 ] ) ;
675
689
}
676
690
677
691
#[ test]
678
692
fn clear ( ) {
679
693
let mut x: HistoryBuf < u8 , 4 > = HistoryBuf :: new_with ( 1 ) ;
680
694
x. clear ( ) ;
681
- assert_eq ! ( x. as_slice ( ) , [ ] ) ;
695
+ assert_eq ! ( x. as_unordered_slice ( ) , [ ] ) ;
682
696
683
697
let mut x: HistoryBuf < u8 , 4 > = HistoryBuf :: new ( ) ;
684
698
x. clear_with ( 1 ) ;
685
- assert_eq ! ( x. as_slice ( ) , [ 1 ; 4 ] ) ;
699
+ assert_eq ! ( x. as_unordered_slice ( ) , [ 1 ; 4 ] ) ;
686
700
}
687
701
688
702
#[ test]
689
703
fn clone ( ) {
690
704
let mut x: HistoryBuf < u8 , 3 > = HistoryBuf :: new ( ) ;
691
705
for i in 0 ..10 {
692
- assert_eq ! ( x. as_slice ( ) , x. clone( ) . as_slice ( ) ) ;
706
+ assert_eq ! ( x. as_unordered_slice ( ) , x. clone( ) . as_unordered_slice ( ) ) ;
693
707
x. write ( i) ;
694
708
}
695
709
@@ -710,17 +724,17 @@ mod tests {
710
724
assert_eq ! ( GLOBAL . load( Ordering :: Relaxed ) , 0 ) ;
711
725
y. write ( InstrumentedClone ( 0 ) ) ;
712
726
assert_eq ! ( GLOBAL . load( Ordering :: Relaxed ) , 0 ) ;
713
- assert_eq ! ( y. clone( ) . as_slice ( ) , [ InstrumentedClone ( 1 ) ] ) ;
727
+ assert_eq ! ( y. clone( ) . as_unordered_slice ( ) , [ InstrumentedClone ( 1 ) ] ) ;
714
728
assert_eq ! ( GLOBAL . load( Ordering :: Relaxed ) , 1 ) ;
715
729
y. write ( InstrumentedClone ( 0 ) ) ;
716
730
assert_eq ! ( GLOBAL . load( Ordering :: Relaxed ) , 1 ) ;
717
731
assert_eq ! (
718
- y. clone( ) . as_slice ( ) ,
732
+ y. clone( ) . as_unordered_slice ( ) ,
719
733
[ InstrumentedClone ( 1 ) , InstrumentedClone ( 1 ) ]
720
734
) ;
721
735
assert_eq ! ( GLOBAL . load( Ordering :: Relaxed ) , 3 ) ;
722
736
assert_eq ! (
723
- y. clone( ) . clone( ) . clone( ) . as_slice ( ) ,
737
+ y. clone( ) . clone( ) . clone( ) . as_unordered_slice ( ) ,
724
738
[ InstrumentedClone ( 3 ) , InstrumentedClone ( 3 ) ]
725
739
) ;
726
740
assert_eq ! ( GLOBAL . load( Ordering :: Relaxed ) , 9 ) ;
@@ -762,15 +776,27 @@ mod tests {
762
776
assert_eq ! ( x. oldest( ) , Some ( & 4 ) ) ;
763
777
}
764
778
779
+ #[ allow( deprecated) ]
765
780
#[ test]
766
781
fn as_slice ( ) {
767
782
let mut x: HistoryBuf < u8 , 4 > = HistoryBuf :: new ( ) ;
768
783
769
- assert_eq ! ( x. as_slice( ) , [ ] ) ;
784
+ assert_eq ! ( x. as_slice( ) , x. as_unordered_slice( ) ) ;
785
+
786
+ x. extend ( [ 1 , 2 , 3 , 4 , 5 ] . iter ( ) ) ;
787
+
788
+ assert_eq ! ( x. as_slice( ) , x. as_unordered_slice( ) ) ;
789
+ }
790
+
791
+ #[ test]
792
+ fn as_unordered_slice ( ) {
793
+ let mut x: HistoryBuf < u8 , 4 > = HistoryBuf :: new ( ) ;
794
+
795
+ assert_eq ! ( x. as_unordered_slice( ) , [ ] ) ;
770
796
771
797
x. extend ( [ 1 , 2 , 3 , 4 , 5 ] . iter ( ) ) ;
772
798
773
- assert_eq ! ( x. as_slice ( ) , [ 5 , 2 , 3 , 4 ] ) ;
799
+ assert_eq ! ( x. as_unordered_slice ( ) , [ 5 , 2 , 3 , 4 ] ) ;
774
800
}
775
801
776
802
/// Test whether `.as_slices()` behaves as expected.
@@ -900,8 +926,8 @@ mod tests {
900
926
x,
901
927
y,
902
928
"{:?} {:?}" ,
903
- x. as_slice ( ) . iter( ) . collect:: <Vec <_>>( ) ,
904
- y. as_slice ( ) . iter( ) . collect:: <Vec <_>>( )
929
+ x. as_unordered_slice ( ) . iter( ) . collect:: <Vec <_>>( ) ,
930
+ y. as_unordered_slice ( ) . iter( ) . collect:: <Vec <_>>( )
905
931
) ;
906
932
}
907
933
}
0 commit comments