File tree 2 files changed +9
-8
lines changed
2 files changed +9
-8
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ extern crate arrayvec;
5
5
use arrayvec:: ArrayVec ;
6
6
7
7
use bencher:: Bencher ;
8
+ use bencher:: black_box;
8
9
9
10
fn extend_with_constant ( b : & mut Bencher ) {
10
11
let mut v = ArrayVec :: < [ u8 ; 512 ] > :: new ( ) ;
@@ -33,7 +34,7 @@ fn extend_with_slice(b: &mut Bencher) {
33
34
let data = [ 1 ; 512 ] ;
34
35
b. iter ( || {
35
36
v. clear ( ) ;
36
- v. extend ( data. iter ( ) . cloned ( ) ) ;
37
+ v. extend ( black_box ( data. iter ( ) ) . cloned ( ) ) ;
37
38
v[ 0 ]
38
39
} ) ;
39
40
b. bytes = v. capacity ( ) as u64 ;
Original file line number Diff line number Diff line change @@ -461,11 +461,11 @@ impl<A: Array> ArrayVec<A> {
461
461
/// array.truncate(4);
462
462
/// assert_eq!(&array[..], &[1, 2, 3]);
463
463
/// ```
464
- pub fn truncate ( & mut self , len : usize ) {
464
+ pub fn truncate ( & mut self , new_len : usize ) {
465
465
unsafe {
466
- if len < self . len ( ) {
467
- let tail: * mut [ _ ] = & mut self [ len ..] ;
468
- self . set_len ( len) ;
466
+ if new_len < self . len ( ) {
467
+ let tail: * mut [ _ ] = & mut self [ new_len ..] ;
468
+ self . len = Index :: from ( new_len ) ;
469
469
ptr:: drop_in_place ( tail) ;
470
470
}
471
471
}
@@ -890,10 +890,10 @@ impl<A: Array> Extend<A::Item> for ArrayVec<A> {
890
890
// We update the length to handle panic in the iteration of the
891
891
// user's iterator, without dropping any elements on the floor.
892
892
let mut guard = ScopeExitGuard {
893
- value : self ,
893
+ value : & mut self . len ,
894
894
data : len,
895
- f : |& len, self_ | {
896
- self_ . set_len ( len)
895
+ f : move |& len, self_len | {
896
+ * * self_len = Index :: from ( len) ;
897
897
}
898
898
} ;
899
899
for elt in iter. into_iter ( ) . take ( take) {
You can’t perform that action at this time.
0 commit comments