@@ -1490,6 +1490,12 @@ impl<T, A: Allocator> Vec<T, A> {
14901490 /// vec.insert(4, 5);
14911491 /// assert_eq!(vec, [1, 4, 2, 3, 5]);
14921492 /// ```
1493+ ///
1494+ /// # Time complexity
1495+ ///
1496+ /// Takes *O*([`Vec::len`]) time. All items after the insertion index must be
1497+ /// shifted to the right. In the worst case, all elements are shifted when
1498+ /// the insertion index is 0.
14931499 #[ cfg( not( no_global_oom_handling) ) ]
14941500 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
14951501 pub fn insert ( & mut self , index : usize , element : T ) {
@@ -1913,6 +1919,13 @@ impl<T, A: Allocator> Vec<T, A> {
19131919 /// vec.push(3);
19141920 /// assert_eq!(vec, [1, 2, 3]);
19151921 /// ```
1922+ ///
1923+ /// # Time complexity
1924+ ///
1925+ /// Takes amortized *O*(1) time. If the vector's length would exceed its
1926+ /// capacity after the push, *O*(*capacity*) time is taken to copy the
1927+ /// vector's elements to a larger allocation. This expensive operation is
1928+ /// offset by the *capacity* *O*(1) insertions it allows.
19161929 #[ cfg( not( no_global_oom_handling) ) ]
19171930 #[ inline]
19181931 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
@@ -1961,6 +1974,10 @@ impl<T, A: Allocator> Vec<T, A> {
19611974 /// }
19621975 /// assert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
19631976 /// ```
1977+ ///
1978+ /// # Time complexity
1979+ ///
1980+ /// Takes *O*(1) time.
19641981 #[ inline]
19651982 #[ unstable( feature = "vec_push_within_capacity" , issue = "100486" ) ]
19661983 pub fn push_within_capacity ( & mut self , value : T ) -> Result < ( ) , T > {
@@ -1990,6 +2007,10 @@ impl<T, A: Allocator> Vec<T, A> {
19902007 /// assert_eq!(vec.pop(), Some(3));
19912008 /// assert_eq!(vec, [1, 2]);
19922009 /// ```
2010+ ///
2011+ /// # Time complexity
2012+ ///
2013+ /// Takes *O*(1) time.
19932014 #[ inline]
19942015 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
19952016 pub fn pop ( & mut self ) -> Option < T > {
0 commit comments