@@ -103,6 +103,7 @@ pub struct VecDeque<
103
103
104
104
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
105
105
impl < T : Clone , A : Allocator + Clone > Clone for VecDeque < T , A > {
106
+ #[ track_caller]
106
107
fn clone ( & self ) -> Self {
107
108
let mut deq = Self :: with_capacity_in ( self . len ( ) , self . allocator ( ) . clone ( ) ) ;
108
109
deq. extend ( self . iter ( ) . cloned ( ) ) ;
@@ -113,6 +114,7 @@ impl<T: Clone, A: Allocator + Clone> Clone for VecDeque<T, A> {
113
114
///
114
115
/// This method is preferred over simply assigning `source.clone()` to `self`,
115
116
/// as it avoids reallocation if possible.
117
+ #[ track_caller]
116
118
fn clone_from ( & mut self , source : & Self ) {
117
119
self . clear ( ) ;
118
120
self . extend ( source. iter ( ) . cloned ( ) ) ;
@@ -570,6 +572,7 @@ impl<T> VecDeque<T> {
570
572
#[ inline]
571
573
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
572
574
#[ must_use]
575
+ #[ track_caller]
573
576
pub fn with_capacity ( capacity : usize ) -> VecDeque < T > {
574
577
Self :: with_capacity_in ( capacity, Global )
575
578
}
@@ -625,6 +628,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
625
628
/// let deque: VecDeque<u32> = VecDeque::with_capacity(10);
626
629
/// ```
627
630
#[ unstable( feature = "allocator_api" , issue = "32838" ) ]
631
+ #[ track_caller]
628
632
pub fn with_capacity_in ( capacity : usize , alloc : A ) -> VecDeque < T , A > {
629
633
VecDeque { head : 0 , len : 0 , buf : RawVec :: with_capacity_in ( capacity, alloc) }
630
634
}
@@ -789,6 +793,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
789
793
///
790
794
/// [`reserve`]: VecDeque::reserve
791
795
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
796
+ #[ track_caller]
792
797
pub fn reserve_exact ( & mut self , additional : usize ) {
793
798
let new_cap = self . len . checked_add ( additional) . expect ( "capacity overflow" ) ;
794
799
let old_cap = self . capacity ( ) ;
@@ -818,6 +823,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
818
823
/// assert!(buf.capacity() >= 11);
819
824
/// ```
820
825
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
826
+ #[ track_caller]
821
827
pub fn reserve ( & mut self , additional : usize ) {
822
828
let new_cap = self . len . checked_add ( additional) . expect ( "capacity overflow" ) ;
823
829
let old_cap = self . capacity ( ) ;
@@ -949,6 +955,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
949
955
/// assert!(buf.capacity() >= 4);
950
956
/// ```
951
957
#[ stable( feature = "deque_extras_15" , since = "1.5.0" ) ]
958
+ #[ track_caller]
952
959
pub fn shrink_to_fit ( & mut self ) {
953
960
self . shrink_to ( 0 ) ;
954
961
}
@@ -974,6 +981,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
974
981
/// assert!(buf.capacity() >= 4);
975
982
/// ```
976
983
#[ stable( feature = "shrink_to" , since = "1.56.0" ) ]
984
+ #[ track_caller]
977
985
pub fn shrink_to ( & mut self , min_capacity : usize ) {
978
986
let target_cap = min_capacity. max ( self . len ) ;
979
987
@@ -1740,6 +1748,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
1740
1748
/// assert_eq!(d.front(), Some(&2));
1741
1749
/// ```
1742
1750
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
1751
+ #[ track_caller]
1743
1752
pub fn push_front ( & mut self , value : T ) {
1744
1753
if self . is_full ( ) {
1745
1754
self . grow ( ) ;
@@ -1767,6 +1776,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
1767
1776
/// ```
1768
1777
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
1769
1778
#[ rustc_confusables( "push" , "put" , "append" ) ]
1779
+ #[ track_caller]
1770
1780
pub fn push_back ( & mut self , value : T ) {
1771
1781
if self . is_full ( ) {
1772
1782
self . grow ( ) ;
@@ -1876,6 +1886,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
1876
1886
/// assert_eq!(vec_deque, &['a', 'd', 'b', 'c']);
1877
1887
/// ```
1878
1888
#[ stable( feature = "deque_extras_15" , since = "1.5.0" ) ]
1889
+ #[ track_caller]
1879
1890
pub fn insert ( & mut self , index : usize , value : T ) {
1880
1891
assert ! ( index <= self . len( ) , "index out of bounds" ) ;
1881
1892
if self . is_full ( ) {
@@ -1979,6 +1990,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
1979
1990
#[ inline]
1980
1991
#[ must_use = "use `.truncate()` if you don't need the other half" ]
1981
1992
#[ stable( feature = "split_off" , since = "1.4.0" ) ]
1993
+ #[ track_caller]
1982
1994
pub fn split_off ( & mut self , at : usize ) -> Self
1983
1995
where
1984
1996
A : Clone ,
@@ -2045,6 +2057,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
2045
2057
/// ```
2046
2058
#[ inline]
2047
2059
#[ stable( feature = "append" , since = "1.4.0" ) ]
2060
+ #[ track_caller]
2048
2061
pub fn append ( & mut self , other : & mut Self ) {
2049
2062
if T :: IS_ZST {
2050
2063
self . len = self . len . checked_add ( other. len ) . expect ( "capacity overflow" ) ;
@@ -2167,6 +2180,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
2167
2180
// be called in cold paths.
2168
2181
// This may panic or abort
2169
2182
#[ inline( never) ]
2183
+ #[ track_caller]
2170
2184
fn grow ( & mut self ) {
2171
2185
// Extend or possibly remove this assertion when valid use-cases for growing the
2172
2186
// buffer without it being full emerge
@@ -2205,6 +2219,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
2205
2219
/// assert_eq!(buf, [5, 10, 101, 102, 103]);
2206
2220
/// ```
2207
2221
#[ stable( feature = "vec_resize_with" , since = "1.33.0" ) ]
2222
+ #[ track_caller]
2208
2223
pub fn resize_with ( & mut self , new_len : usize , generator : impl FnMut ( ) -> T ) {
2209
2224
let len = self . len ;
2210
2225
@@ -2751,6 +2766,7 @@ impl<T: Clone, A: Allocator> VecDeque<T, A> {
2751
2766
/// assert_eq!(buf, [5, 10, 20, 20, 20]);
2752
2767
/// ```
2753
2768
#[ stable( feature = "deque_extras" , since = "1.16.0" ) ]
2769
+ #[ track_caller]
2754
2770
pub fn resize ( & mut self , new_len : usize , value : T ) {
2755
2771
if new_len > self . len ( ) {
2756
2772
let extra = new_len - self . len ( ) ;
@@ -2870,6 +2886,7 @@ impl<T, A: Allocator> IndexMut<usize> for VecDeque<T, A> {
2870
2886
2871
2887
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
2872
2888
impl < T > FromIterator < T > for VecDeque < T > {
2889
+ #[ track_caller]
2873
2890
fn from_iter < I : IntoIterator < Item = T > > ( iter : I ) -> VecDeque < T > {
2874
2891
SpecFromIter :: spec_from_iter ( iter. into_iter ( ) )
2875
2892
}
@@ -2909,16 +2926,19 @@ impl<'a, T, A: Allocator> IntoIterator for &'a mut VecDeque<T, A> {
2909
2926
2910
2927
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
2911
2928
impl < T , A : Allocator > Extend < T > for VecDeque < T , A > {
2929
+ #[ track_caller]
2912
2930
fn extend < I : IntoIterator < Item = T > > ( & mut self , iter : I ) {
2913
2931
<Self as SpecExtend < T , I :: IntoIter > >:: spec_extend ( self , iter. into_iter ( ) ) ;
2914
2932
}
2915
2933
2916
2934
#[ inline]
2935
+ #[ track_caller]
2917
2936
fn extend_one ( & mut self , elem : T ) {
2918
2937
self . push_back ( elem) ;
2919
2938
}
2920
2939
2921
2940
#[ inline]
2941
+ #[ track_caller]
2922
2942
fn extend_reserve ( & mut self , additional : usize ) {
2923
2943
self . reserve ( additional) ;
2924
2944
}
@@ -2934,16 +2954,19 @@ impl<T, A: Allocator> Extend<T> for VecDeque<T, A> {
2934
2954
2935
2955
#[ stable( feature = "extend_ref" , since = "1.2.0" ) ]
2936
2956
impl < ' a , T : ' a + Copy , A : Allocator > Extend < & ' a T > for VecDeque < T , A > {
2957
+ #[ track_caller]
2937
2958
fn extend < I : IntoIterator < Item = & ' a T > > ( & mut self , iter : I ) {
2938
2959
self . spec_extend ( iter. into_iter ( ) ) ;
2939
2960
}
2940
2961
2941
2962
#[ inline]
2963
+ #[ track_caller]
2942
2964
fn extend_one ( & mut self , & elem: & ' a T ) {
2943
2965
self . push_back ( elem) ;
2944
2966
}
2945
2967
2946
2968
#[ inline]
2969
+ #[ track_caller]
2947
2970
fn extend_reserve ( & mut self , additional : usize ) {
2948
2971
self . reserve ( additional) ;
2949
2972
}
@@ -3041,6 +3064,7 @@ impl<T, const N: usize> From<[T; N]> for VecDeque<T> {
3041
3064
/// let deq2: VecDeque<_> = [1, 2, 3, 4].into();
3042
3065
/// assert_eq!(deq1, deq2);
3043
3066
/// ```
3067
+ #[ track_caller]
3044
3068
fn from ( arr : [ T ; N ] ) -> Self {
3045
3069
let mut deq = VecDeque :: with_capacity ( N ) ;
3046
3070
let arr = ManuallyDrop :: new ( arr) ;
0 commit comments