@@ -1849,3 +1849,46 @@ fn test_truncate_front() {
1849
1849
v. truncate_front ( 5 ) ;
1850
1850
assert_eq ! ( v. as_slices( ) , ( [ 2 , 3 , 4 , 5 , 6 ] . as_slice( ) , [ ] . as_slice( ) ) ) ;
1851
1851
}
1852
+
1853
+ #[ test]
1854
+ fn test_extend_front ( ) {
1855
+ let mut v = VecDeque :: new ( ) ;
1856
+ v. extend_front ( 0 ..3 ) ;
1857
+ assert_eq ! ( v, [ 2 , 1 , 0 ] ) ;
1858
+ v. extend_front ( 3 ..6 ) ;
1859
+ assert_eq ! ( v, [ 5 , 4 , 3 , 2 , 1 , 0 ] ) ;
1860
+ v. prepend ( [ 1 ; 4 ] ) ;
1861
+ assert_eq ! ( v, [ 1 , 1 , 1 , 1 , 5 , 4 , 3 , 2 , 1 , 0 ] ) ;
1862
+
1863
+ let mut v = VecDeque :: with_capacity ( 8 ) ;
1864
+ let cap = v. capacity ( ) ;
1865
+ v. extend ( 0 ..4 ) ;
1866
+ v. truncate_front ( 2 ) ;
1867
+ v. extend_front ( 4 ..8 ) ;
1868
+ assert_eq ! ( v. as_slices( ) , ( [ 7 , 6 ] . as_slice( ) , [ 5 , 4 , 2 , 3 ] . as_slice( ) ) ) ;
1869
+ assert_eq ! ( v. capacity( ) , cap) ;
1870
+
1871
+ let mut v = VecDeque :: new ( ) ;
1872
+ v. extend_front ( [ ] ) ;
1873
+ v. extend_front ( None ) ;
1874
+ v. extend_front ( vec ! [ ] ) ;
1875
+ v. prepend ( [ ] ) ;
1876
+ v. prepend ( None ) ;
1877
+ v. prepend ( vec ! [ ] ) ;
1878
+ assert_eq ! ( v. capacity( ) , 0 ) ;
1879
+ v. extend_front ( Some ( 123 ) ) ;
1880
+ assert_eq ! ( v, [ 123 ] ) ;
1881
+ }
1882
+
1883
+ #[ test]
1884
+ fn test_extend_front_specialization ( ) {
1885
+ let mut v = VecDeque :: with_capacity ( 4 ) ;
1886
+ v. prepend ( vec ! [ 1 , 2 , 3 ] ) ;
1887
+ assert_eq ! ( v, [ 1 , 2 , 3 ] ) ;
1888
+ v. pop_front ( ) ;
1889
+ v. prepend ( ( -4 ..2 ) . collect :: < Vec < _ > > ( ) ) ;
1890
+ assert_eq ! ( v, ( -4 ..=3 ) . collect:: <Vec <_>>( ) ) ;
1891
+ v. clear ( ) ;
1892
+ v. extend_front ( vec ! [ 1 , 2 , 3 ] ) ;
1893
+ assert_eq ! ( v, [ 3 , 2 , 1 ] ) ;
1894
+ }
0 commit comments