1
- #![ cfg( feature = "alloc" ) ]
2
-
3
1
use super :: * ;
4
2
5
3
use alloc:: vec:: { self , Vec } ;
@@ -35,7 +33,7 @@ use serde::ser::{Serialize, SerializeSeq, Serializer};
35
33
/// let many_ints: TinyVec<[i32; 4]> = tiny_vec!(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
36
34
/// ```
37
35
#[ macro_export]
38
- #[ cfg_attr( docs_rs , doc( cfg( feature = "alloc" ) ) ) ]
36
+ #[ cfg_attr( docsrs , doc( cfg( feature = "alloc" ) ) ) ]
39
37
macro_rules! tiny_vec {
40
38
( $array_type: ty => $( $elem: expr) ,* $( , ) ?) => {
41
39
{
@@ -94,7 +92,7 @@ pub enum TinyVecConstructor<A: Array> {
94
92
/// let empty_tv = tiny_vec!([u8; 16]);
95
93
/// let some_ints = tiny_vec!([i32; 4] => 1, 2, 3);
96
94
/// ```
97
- #[ cfg_attr( docs_rs , doc( cfg( feature = "alloc" ) ) ) ]
95
+ #[ cfg_attr( docsrs , doc( cfg( feature = "alloc" ) ) ) ]
98
96
pub enum TinyVec < A : Array > {
99
97
#[ allow( missing_docs) ]
100
98
Inline ( ArrayVec < A > ) ,
@@ -266,6 +264,7 @@ impl<A: Array> TinyVec<A> {
266
264
/// tv.shrink_to_fit();
267
265
/// assert!(tv.is_inline());
268
266
/// ```
267
+ #[ inline]
269
268
pub fn shrink_to_fit ( & mut self ) {
270
269
let vec = match self {
271
270
TinyVec :: Inline ( _) => return ,
@@ -276,7 +275,7 @@ impl<A: Array> TinyVec<A> {
276
275
return vec. shrink_to_fit ( ) ;
277
276
}
278
277
279
- let moved_vec = core:: mem:: replace ( vec, Vec :: new ( ) ) ;
278
+ let moved_vec = core:: mem:: take ( vec) ;
280
279
281
280
let mut av = ArrayVec :: default ( ) ;
282
281
let mut rest = av. fill ( moved_vec) ;
@@ -339,6 +338,7 @@ impl<A: Array> TinyVec<A> {
339
338
/// assert!(tv.is_heap());
340
339
/// assert!(tv.capacity() >= 35);
341
340
/// ```
341
+ #[ inline]
342
342
pub fn move_to_the_heap_and_reserve ( & mut self , n : usize ) {
343
343
let arr = match self {
344
344
TinyVec :: Heap ( h) => return h. reserve ( n) ,
@@ -388,6 +388,7 @@ impl<A: Array> TinyVec<A> {
388
388
/// assert!(tv.is_heap());
389
389
/// assert!(tv.capacity() >= 5);
390
390
/// ```
391
+ #[ inline]
391
392
pub fn reserve ( & mut self , n : usize ) {
392
393
let arr = match self {
393
394
TinyVec :: Heap ( h) => return h. reserve ( n) ,
@@ -451,6 +452,7 @@ impl<A: Array> TinyVec<A> {
451
452
/// assert!(tv.is_heap());
452
453
/// assert!(tv.capacity() >= 5);
453
454
/// ```
455
+ #[ inline]
454
456
pub fn reserve_exact ( & mut self , n : usize ) {
455
457
let arr = match self {
456
458
TinyVec :: Heap ( h) => return h. reserve_exact ( n) ,
@@ -640,7 +642,7 @@ impl<A: Array> TinyVec<A> {
640
642
/// assert_eq!(tv.as_slice(), &[2, 4][..]);
641
643
/// ```
642
644
#[ inline]
643
- pub fn retain < F : FnMut ( & A :: Item ) -> bool > ( self : & mut Self , acceptable : F ) {
645
+ pub fn retain < F : FnMut ( & A :: Item ) -> bool > ( & mut self , acceptable : F ) {
644
646
match self {
645
647
TinyVec :: Inline ( i) => i. retain ( acceptable) ,
646
648
TinyVec :: Heap ( h) => h. retain ( acceptable) ,
@@ -671,14 +673,14 @@ impl<A: Array> TinyVec<A> {
671
673
/// Helper for getting the mut slice.
672
674
#[ inline( always) ]
673
675
#[ must_use]
674
- pub fn as_mut_slice ( self : & mut Self ) -> & mut [ A :: Item ] {
676
+ pub fn as_mut_slice ( & mut self ) -> & mut [ A :: Item ] {
675
677
self . deref_mut ( )
676
678
}
677
679
678
680
/// Helper for getting the shared slice.
679
681
#[ inline( always) ]
680
682
#[ must_use]
681
- pub fn as_slice ( self : & Self ) -> & [ A :: Item ] {
683
+ pub fn as_slice ( & self ) -> & [ A :: Item ] {
682
684
self . deref ( )
683
685
}
684
686
@@ -838,8 +840,7 @@ impl<A: Array> TinyVec<A> {
838
840
839
841
if let Some ( x) = arr. try_insert ( index, item) {
840
842
let mut v = Vec :: with_capacity ( arr. len ( ) * 2 ) ;
841
- let mut it =
842
- arr. iter_mut ( ) . map ( |r| core:: mem:: replace ( r, Default :: default ( ) ) ) ;
843
+ let mut it = arr. iter_mut ( ) . map ( core:: mem:: take) ;
843
844
v. extend ( it. by_ref ( ) . take ( index) ) ;
844
845
v. push ( x) ;
845
846
v. extend ( it) ;
@@ -1061,7 +1062,7 @@ impl<A: Array> TinyVec<A> {
1061
1062
/// Draining iterator for `TinyVecDrain`
1062
1063
///
1063
1064
/// See [`TinyVecDrain::drain`](TinyVecDrain::<A>::drain)
1064
- #[ cfg_attr( docs_rs , doc( cfg( feature = "alloc" ) ) ) ]
1065
+ #[ cfg_attr( docsrs , doc( cfg( feature = "alloc" ) ) ) ]
1065
1066
pub enum TinyVecDrain < ' p , A : Array > {
1066
1067
#[ allow( missing_docs) ]
1067
1068
Inline ( ArrayVecDrain < ' p , A :: Item > ) ,
@@ -1110,7 +1111,7 @@ impl<'p, A: Array> DoubleEndedIterator for TinyVecDrain<'p, A> {
1110
1111
1111
1112
/// Splicing iterator for `TinyVec`
1112
1113
/// See [`TinyVec::splice`](TinyVec::<A>::splice)
1113
- #[ cfg_attr( docs_rs , doc( cfg( feature = "alloc" ) ) ) ]
1114
+ #[ cfg_attr( docsrs , doc( cfg( feature = "alloc" ) ) ) ]
1114
1115
pub struct TinyVecSplice < ' p , A : Array , I : Iterator < Item = A :: Item > > {
1115
1116
parent : & ' p mut TinyVec < A > ,
1116
1117
removal_start : usize ,
@@ -1205,6 +1206,7 @@ where
1205
1206
impl < ' p , A : Array , I : Iterator < Item = A :: Item > > Drop
1206
1207
for TinyVecSplice < ' p , A , I >
1207
1208
{
1209
+ #[ inline]
1208
1210
fn drop ( & mut self ) {
1209
1211
for _ in self . by_ref ( ) { }
1210
1212
@@ -1286,6 +1288,7 @@ impl<A: Array> From<ArrayVec<A>> for TinyVec<A> {
1286
1288
}
1287
1289
1288
1290
impl < A : Array > From < A > for TinyVec < A > {
1291
+ #[ inline]
1289
1292
fn from ( array : A ) -> Self {
1290
1293
TinyVec :: Inline ( ArrayVec :: from ( array) )
1291
1294
}
@@ -1330,7 +1333,7 @@ impl<A: Array> FromIterator<A::Item> for TinyVec<A> {
1330
1333
}
1331
1334
1332
1335
/// Iterator for consuming an `TinyVec` and returning owned elements.
1333
- #[ cfg_attr( docs_rs , doc( cfg( feature = "alloc" ) ) ) ]
1336
+ #[ cfg_attr( docsrs , doc( cfg( feature = "alloc" ) ) ) ]
1334
1337
pub enum TinyVecIterator < A : Array > {
1335
1338
#[ allow( missing_docs) ]
1336
1339
Inline ( ArrayVecIterator < A > ) ,
0 commit comments