19
19
20
20
use core:: cmp:: Ordering ;
21
21
use core:: fmt;
22
- use core:: iter:: { repeat , repeat_with, FromIterator , FusedIterator } ;
22
+ use core:: iter:: { repeat_with, FromIterator , FusedIterator } ;
23
23
use core:: mem;
24
24
use core:: ops:: Bound :: { Excluded , Included , Unbounded } ;
25
25
use core:: ops:: { Index , IndexMut , RangeBounds } ;
@@ -701,7 +701,7 @@ impl<T> VecDeque<T> {
701
701
/// buf.shrink_to(0);
702
702
/// assert!(buf.capacity() >= 4);
703
703
/// ```
704
- #[ unstable( feature = "shrink_to" , reason = "new API" , issue="0 " ) ]
704
+ #[ unstable( feature = "shrink_to" , reason = "new API" , issue="56431 " ) ]
705
705
pub fn shrink_to ( & mut self , min_capacity : usize ) {
706
706
assert ! ( self . capacity( ) >= min_capacity, "Tried to shrink to a larger capacity" ) ;
707
707
@@ -1886,16 +1886,16 @@ impl<T> VecDeque<T> {
1886
1886
debug_assert ! ( !self . is_full( ) ) ;
1887
1887
}
1888
1888
}
1889
- }
1890
1889
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.
1895
1893
///
1896
1894
/// # Examples
1897
1895
///
1898
1896
/// ```
1897
+ /// #![feature(vec_resize_with)]
1898
+ ///
1899
1899
/// use std::collections::VecDeque;
1900
1900
///
1901
1901
/// let mut buf = VecDeque::new();
@@ -1904,32 +1904,36 @@ impl<T: Clone> VecDeque<T> {
1904
1904
/// buf.push_back(15);
1905
1905
/// assert_eq!(buf, [5, 10, 15]);
1906
1906
///
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!());
1908
1911
/// assert_eq!(buf, [5, 10]);
1909
1912
///
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]);
1912
1916
/// ```
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 ) {
1915
1919
let len = self . len ( ) ;
1916
1920
1917
1921
if new_len > len {
1918
- self . extend ( repeat ( value ) . take ( new_len - len) )
1922
+ self . extend ( repeat_with ( generator ) . take ( new_len - len) )
1919
1923
} else {
1920
1924
self . truncate ( new_len) ;
1921
1925
}
1922
1926
}
1927
+ }
1923
1928
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.
1927
1933
///
1928
1934
/// # Examples
1929
1935
///
1930
1936
/// ```
1931
- /// #![feature(vec_resize_with)]
1932
- ///
1933
1937
/// use std::collections::VecDeque;
1934
1938
///
1935
1939
/// let mut buf = VecDeque::new();
@@ -1938,25 +1942,15 @@ impl<T: Clone> VecDeque<T> {
1938
1942
/// buf.push_back(15);
1939
1943
/// assert_eq!(buf, [5, 10, 15]);
1940
1944
///
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);
1945
1946
/// assert_eq!(buf, [5, 10]);
1946
1947
///
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]);
1950
1950
/// ```
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 ( ) ) ;
1960
1954
}
1961
1955
}
1962
1956
0 commit comments