1919
2020use core:: cmp:: Ordering ;
2121use core:: fmt;
22- use core:: iter:: { repeat , repeat_with, FromIterator , FusedIterator } ;
22+ use core:: iter:: { repeat_with, FromIterator , FusedIterator } ;
2323use core:: mem;
2424use core:: ops:: Bound :: { Excluded , Included , Unbounded } ;
2525use core:: ops:: { Index , IndexMut , RangeBounds } ;
@@ -1886,16 +1886,16 @@ impl<T> VecDeque<T> {
18861886 debug_assert ! ( !self . is_full( ) ) ;
18871887 }
18881888 }
1889- }
18901889
1891- impl < T : Clone > VecDeque < T > {
1892- /// Modifies the `VecDeque` in-place so that `len()` is equal to new_len,
1893- /// either by removing excess elements from the back or by appending clones of `value`
1894- /// to the back.
1890+ /// Modifies the `VecDeque` in-place so that `len()` is equal to `new_len`,
1891+ /// either by removing excess elements from the back or by appending
1892+ /// elements generated by calling `generator` to the back.
18951893 ///
18961894 /// # Examples
18971895 ///
18981896 /// ```
1897+ /// #![feature(vec_resize_with)]
1898+ ///
18991899 /// use std::collections::VecDeque;
19001900 ///
19011901 /// let mut buf = VecDeque::new();
@@ -1904,32 +1904,36 @@ impl<T: Clone> VecDeque<T> {
19041904 /// buf.push_back(15);
19051905 /// assert_eq!(buf, [5, 10, 15]);
19061906 ///
1907- /// buf.resize(2, 0);
1907+ /// buf.resize_with(5, Default::default);
1908+ /// assert_eq!(buf, [5, 10, 15, 0, 0]);
1909+ ///
1910+ /// buf.resize_with(2, || unreachable!());
19081911 /// assert_eq!(buf, [5, 10]);
19091912 ///
1910- /// buf.resize(5, 20);
1911- /// assert_eq!(buf, [5, 10, 20, 20, 20]);
1913+ /// let mut state = 100;
1914+ /// buf.resize_with(5, || { state += 1; state });
1915+ /// assert_eq!(buf, [5, 10, 101, 102, 103]);
19121916 /// ```
1913- #[ stable ( feature = "deque_extras " , since = "1.16.0 " ) ]
1914- pub fn resize ( & mut self , new_len : usize , value : T ) {
1917+ #[ unstable ( feature = "vec_resize_with " , issue = "41758 " ) ]
1918+ pub fn resize_with ( & mut self , new_len : usize , generator : impl FnMut ( ) -> T ) {
19151919 let len = self . len ( ) ;
19161920
19171921 if new_len > len {
1918- self . extend ( repeat ( value ) . take ( new_len - len) )
1922+ self . extend ( repeat_with ( generator ) . take ( new_len - len) )
19191923 } else {
19201924 self . truncate ( new_len) ;
19211925 }
19221926 }
1927+ }
19231928
1924- /// Modifies the `VecDeque` in-place so that `len()` is equal to `new_len`,
1925- /// either by removing excess elements from the back or by appending
1926- /// elements generated by calling `generator` to the back.
1929+ impl < T : Clone > VecDeque < T > {
1930+ /// Modifies the `VecDeque` in-place so that `len()` is equal to new_len,
1931+ /// either by removing excess elements from the back or by appending clones of `value`
1932+ /// to the back.
19271933 ///
19281934 /// # Examples
19291935 ///
19301936 /// ```
1931- /// #![feature(vec_resize_with)]
1932- ///
19331937 /// use std::collections::VecDeque;
19341938 ///
19351939 /// let mut buf = VecDeque::new();
@@ -1938,25 +1942,15 @@ impl<T: Clone> VecDeque<T> {
19381942 /// buf.push_back(15);
19391943 /// assert_eq!(buf, [5, 10, 15]);
19401944 ///
1941- /// buf.resize_with(5, Default::default);
1942- /// assert_eq!(buf, [5, 10, 15, 0, 0]);
1943- ///
1944- /// buf.resize_with(2, || unreachable!());
1945+ /// buf.resize(2, 0);
19451946 /// assert_eq!(buf, [5, 10]);
19461947 ///
1947- /// let mut state = 100;
1948- /// buf.resize_with(5, || { state += 1; state });
1949- /// assert_eq!(buf, [5, 10, 101, 102, 103]);
1948+ /// buf.resize(5, 20);
1949+ /// assert_eq!(buf, [5, 10, 20, 20, 20]);
19501950 /// ```
1951- #[ unstable( feature = "vec_resize_with" , issue = "41758" ) ]
1952- pub fn resize_with ( & mut self , new_len : usize , generator : impl FnMut ( ) ->T ) {
1953- let len = self . len ( ) ;
1954-
1955- if new_len > len {
1956- self . extend ( repeat_with ( generator) . take ( new_len - len) )
1957- } else {
1958- self . truncate ( new_len) ;
1959- }
1951+ #[ stable( feature = "deque_extras" , since = "1.16.0" ) ]
1952+ pub fn resize ( & mut self , new_len : usize , value : T ) {
1953+ self . resize_with ( new_len, || value. clone ( ) ) ;
19601954 }
19611955}
19621956
0 commit comments