@@ -103,6 +103,7 @@ pub struct VecDeque<
103103
104104#[ stable( feature = "rust1" , since = "1.0.0" ) ]
105105impl < T : Clone , A : Allocator + Clone > Clone for VecDeque < T , A > {
106+ #[ track_caller]
106107 fn clone ( & self ) -> Self {
107108 let mut deq = Self :: with_capacity_in ( self . len ( ) , self . allocator ( ) . clone ( ) ) ;
108109 deq. extend ( self . iter ( ) . cloned ( ) ) ;
@@ -113,6 +114,7 @@ impl<T: Clone, A: Allocator + Clone> Clone for VecDeque<T, A> {
113114 ///
114115 /// This method is preferred over simply assigning `source.clone()` to `self`,
115116 /// as it avoids reallocation if possible.
117+ #[ track_caller]
116118 fn clone_from ( & mut self , source : & Self ) {
117119 self . clear ( ) ;
118120 self . extend ( source. iter ( ) . cloned ( ) ) ;
@@ -570,6 +572,7 @@ impl<T> VecDeque<T> {
570572 #[ inline]
571573 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
572574 #[ must_use]
575+ #[ track_caller]
573576 pub fn with_capacity ( capacity : usize ) -> VecDeque < T > {
574577 Self :: with_capacity_in ( capacity, Global )
575578 }
@@ -625,6 +628,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
625628 /// let deque: VecDeque<u32> = VecDeque::with_capacity(10);
626629 /// ```
627630 #[ unstable( feature = "allocator_api" , issue = "32838" ) ]
631+ #[ track_caller]
628632 pub fn with_capacity_in ( capacity : usize , alloc : A ) -> VecDeque < T , A > {
629633 VecDeque { head : 0 , len : 0 , buf : RawVec :: with_capacity_in ( capacity, alloc) }
630634 }
@@ -789,6 +793,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
789793 ///
790794 /// [`reserve`]: VecDeque::reserve
791795 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
796+ #[ track_caller]
792797 pub fn reserve_exact ( & mut self , additional : usize ) {
793798 let new_cap = self . len . checked_add ( additional) . expect ( "capacity overflow" ) ;
794799 let old_cap = self . capacity ( ) ;
@@ -818,6 +823,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
818823 /// assert!(buf.capacity() >= 11);
819824 /// ```
820825 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
826+ #[ track_caller]
821827 pub fn reserve ( & mut self , additional : usize ) {
822828 let new_cap = self . len . checked_add ( additional) . expect ( "capacity overflow" ) ;
823829 let old_cap = self . capacity ( ) ;
@@ -949,6 +955,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
949955 /// assert!(buf.capacity() >= 4);
950956 /// ```
951957 #[ stable( feature = "deque_extras_15" , since = "1.5.0" ) ]
958+ #[ track_caller]
952959 pub fn shrink_to_fit ( & mut self ) {
953960 self . shrink_to ( 0 ) ;
954961 }
@@ -974,6 +981,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
974981 /// assert!(buf.capacity() >= 4);
975982 /// ```
976983 #[ stable( feature = "shrink_to" , since = "1.56.0" ) ]
984+ #[ track_caller]
977985 pub fn shrink_to ( & mut self , min_capacity : usize ) {
978986 let target_cap = min_capacity. max ( self . len ) ;
979987
@@ -1740,6 +1748,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
17401748 /// assert_eq!(d.front(), Some(&2));
17411749 /// ```
17421750 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
1751+ #[ track_caller]
17431752 pub fn push_front ( & mut self , value : T ) {
17441753 if self . is_full ( ) {
17451754 self . grow ( ) ;
@@ -1767,6 +1776,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
17671776 /// ```
17681777 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
17691778 #[ rustc_confusables( "push" , "put" , "append" ) ]
1779+ #[ track_caller]
17701780 pub fn push_back ( & mut self , value : T ) {
17711781 if self . is_full ( ) {
17721782 self . grow ( ) ;
@@ -1876,6 +1886,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
18761886 /// assert_eq!(vec_deque, &['a', 'd', 'b', 'c']);
18771887 /// ```
18781888 #[ stable( feature = "deque_extras_15" , since = "1.5.0" ) ]
1889+ #[ track_caller]
18791890 pub fn insert ( & mut self , index : usize , value : T ) {
18801891 assert ! ( index <= self . len( ) , "index out of bounds" ) ;
18811892 if self . is_full ( ) {
@@ -1979,6 +1990,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
19791990 #[ inline]
19801991 #[ must_use = "use `.truncate()` if you don't need the other half" ]
19811992 #[ stable( feature = "split_off" , since = "1.4.0" ) ]
1993+ #[ track_caller]
19821994 pub fn split_off ( & mut self , at : usize ) -> Self
19831995 where
19841996 A : Clone ,
@@ -2045,6 +2057,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
20452057 /// ```
20462058 #[ inline]
20472059 #[ stable( feature = "append" , since = "1.4.0" ) ]
2060+ #[ track_caller]
20482061 pub fn append ( & mut self , other : & mut Self ) {
20492062 if T :: IS_ZST {
20502063 self . len = self . len . checked_add ( other. len ) . expect ( "capacity overflow" ) ;
@@ -2167,6 +2180,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
21672180 // be called in cold paths.
21682181 // This may panic or abort
21692182 #[ inline( never) ]
2183+ #[ track_caller]
21702184 fn grow ( & mut self ) {
21712185 // Extend or possibly remove this assertion when valid use-cases for growing the
21722186 // buffer without it being full emerge
@@ -2205,6 +2219,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
22052219 /// assert_eq!(buf, [5, 10, 101, 102, 103]);
22062220 /// ```
22072221 #[ stable( feature = "vec_resize_with" , since = "1.33.0" ) ]
2222+ #[ track_caller]
22082223 pub fn resize_with ( & mut self , new_len : usize , generator : impl FnMut ( ) -> T ) {
22092224 let len = self . len ;
22102225
@@ -2751,6 +2766,7 @@ impl<T: Clone, A: Allocator> VecDeque<T, A> {
27512766 /// assert_eq!(buf, [5, 10, 20, 20, 20]);
27522767 /// ```
27532768 #[ stable( feature = "deque_extras" , since = "1.16.0" ) ]
2769+ #[ track_caller]
27542770 pub fn resize ( & mut self , new_len : usize , value : T ) {
27552771 if new_len > self . len ( ) {
27562772 let extra = new_len - self . len ( ) ;
@@ -2870,6 +2886,7 @@ impl<T, A: Allocator> IndexMut<usize> for VecDeque<T, A> {
28702886
28712887#[ stable( feature = "rust1" , since = "1.0.0" ) ]
28722888impl < T > FromIterator < T > for VecDeque < T > {
2889+ #[ track_caller]
28732890 fn from_iter < I : IntoIterator < Item = T > > ( iter : I ) -> VecDeque < T > {
28742891 SpecFromIter :: spec_from_iter ( iter. into_iter ( ) )
28752892 }
@@ -2909,16 +2926,19 @@ impl<'a, T, A: Allocator> IntoIterator for &'a mut VecDeque<T, A> {
29092926
29102927#[ stable( feature = "rust1" , since = "1.0.0" ) ]
29112928impl < T , A : Allocator > Extend < T > for VecDeque < T , A > {
2929+ #[ track_caller]
29122930 fn extend < I : IntoIterator < Item = T > > ( & mut self , iter : I ) {
29132931 <Self as SpecExtend < T , I :: IntoIter > >:: spec_extend ( self , iter. into_iter ( ) ) ;
29142932 }
29152933
29162934 #[ inline]
2935+ #[ track_caller]
29172936 fn extend_one ( & mut self , elem : T ) {
29182937 self . push_back ( elem) ;
29192938 }
29202939
29212940 #[ inline]
2941+ #[ track_caller]
29222942 fn extend_reserve ( & mut self , additional : usize ) {
29232943 self . reserve ( additional) ;
29242944 }
@@ -2934,16 +2954,19 @@ impl<T, A: Allocator> Extend<T> for VecDeque<T, A> {
29342954
29352955#[ stable( feature = "extend_ref" , since = "1.2.0" ) ]
29362956impl < ' a , T : ' a + Copy , A : Allocator > Extend < & ' a T > for VecDeque < T , A > {
2957+ #[ track_caller]
29372958 fn extend < I : IntoIterator < Item = & ' a T > > ( & mut self , iter : I ) {
29382959 self . spec_extend ( iter. into_iter ( ) ) ;
29392960 }
29402961
29412962 #[ inline]
2963+ #[ track_caller]
29422964 fn extend_one ( & mut self , & elem: & ' a T ) {
29432965 self . push_back ( elem) ;
29442966 }
29452967
29462968 #[ inline]
2969+ #[ track_caller]
29472970 fn extend_reserve ( & mut self , additional : usize ) {
29482971 self . reserve ( additional) ;
29492972 }
@@ -3041,6 +3064,7 @@ impl<T, const N: usize> From<[T; N]> for VecDeque<T> {
30413064 /// let deq2: VecDeque<_> = [1, 2, 3, 4].into();
30423065 /// assert_eq!(deq1, deq2);
30433066 /// ```
3067+ #[ track_caller]
30443068 fn from ( arr : [ T ; N ] ) -> Self {
30453069 let mut deq = VecDeque :: with_capacity ( N ) ;
30463070 let arr = ManuallyDrop :: new ( arr) ;
0 commit comments