@@ -85,6 +85,7 @@ impl<T> Vec<T> {
85
85
/// # use std::vec::Vec;
86
86
/// let vec: Vec<int> = Vec::with_capacity(10);
87
87
/// ```
88
+ #[ inline]
88
89
pub fn with_capacity ( capacity : uint ) -> Vec < T > {
89
90
if mem:: size_of :: < T > ( ) == 0 {
90
91
Vec { len : 0 , cap : uint:: MAX , ptr : 0 as * mut T }
@@ -110,6 +111,7 @@ impl<T> Vec<T> {
110
111
/// let vec = Vec::from_fn(3, |idx| idx * 2);
111
112
/// assert_eq!(vec, vec!(0, 2, 4));
112
113
/// ```
114
+ #[ inline]
113
115
pub fn from_fn ( length : uint , op: |uint| -> T ) -> Vec < T > {
114
116
unsafe {
115
117
let mut xs = Vec :: with_capacity ( length) ;
@@ -193,6 +195,7 @@ impl<T: Clone> Vec<T> {
193
195
/// let slice = [1, 2, 3];
194
196
/// let vec = Vec::from_slice(slice);
195
197
/// ```
198
+ #[ inline]
196
199
pub fn from_slice ( values : & [ T ] ) -> Vec < T > {
197
200
values. iter ( ) . map ( |x| x. clone ( ) ) . collect ( )
198
201
}
@@ -207,6 +210,7 @@ impl<T: Clone> Vec<T> {
207
210
/// let vec = Vec::from_elem(3, "hi");
208
211
/// println!("{}", vec); // prints [hi, hi, hi]
209
212
/// ```
213
+ #[ inline]
210
214
pub fn from_elem ( length : uint , value : T ) -> Vec < T > {
211
215
unsafe {
212
216
let mut xs = Vec :: with_capacity ( length) ;
@@ -353,6 +357,7 @@ impl<T:Clone> Clone for Vec<T> {
353
357
}
354
358
355
359
impl < T > FromIterator < T > for Vec < T > {
360
+ #[ inline]
356
361
fn from_iter < I : Iterator < T > > ( mut iterator : I ) -> Vec < T > {
357
362
let ( lower, _) = iterator. size_hint ( ) ;
358
363
let mut vector = Vec :: with_capacity ( lower) ;
@@ -364,6 +369,7 @@ impl<T> FromIterator<T> for Vec<T> {
364
369
}
365
370
366
371
impl < T > Extendable < T > for Vec < T > {
372
+ #[ inline]
367
373
fn extend < I : Iterator < T > > ( & mut self , mut iterator : I ) {
368
374
let ( lower, _) = iterator. size_hint ( ) ;
369
375
self . reserve_additional ( lower) ;
@@ -1029,6 +1035,7 @@ impl<T> Vec<T> {
1029
1035
/// vec.push_all_move(vec!(box 2, box 3, box 4));
1030
1036
/// assert_eq!(vec, vec!(box 1, box 2, box 3, box 4));
1031
1037
/// ```
1038
+ #[ inline]
1032
1039
pub fn push_all_move ( & mut self , other : Vec < T > ) {
1033
1040
self . extend ( other. move_iter ( ) ) ;
1034
1041
}
@@ -1306,6 +1313,7 @@ impl<T:PartialEq> Vec<T> {
1306
1313
/// let vec = vec!(1, 2, 3);
1307
1314
/// assert!(vec.contains(&1));
1308
1315
/// ```
1316
+ #[ inline]
1309
1317
pub fn contains ( & self , x : & T ) -> bool {
1310
1318
self . as_slice ( ) . contains ( x)
1311
1319
}
@@ -1836,4 +1844,111 @@ mod tests {
1836
1844
let mut v = vec ! [ BadElem ( 1 ) , BadElem ( 2 ) , BadElem ( 0xbadbeef ) , BadElem ( 4 ) ] ;
1837
1845
v. truncate ( 0 ) ;
1838
1846
}
1847
+
1848
+ #[ bench]
1849
+ fn bench_new ( b : & mut Bencher ) {
1850
+ b. iter ( || {
1851
+ let v: Vec < int > = Vec :: new ( ) ;
1852
+ assert_eq ! ( v. capacity( ) , 0 ) ;
1853
+ assert ! ( v. as_slice( ) == [ ] ) ;
1854
+ } )
1855
+ }
1856
+
1857
+ #[ bench]
1858
+ fn bench_with_capacity_0 ( b : & mut Bencher ) {
1859
+ b. iter ( || {
1860
+ let v: Vec < int > = Vec :: with_capacity ( 0 ) ;
1861
+ assert_eq ! ( v. capacity( ) , 0 ) ;
1862
+ assert ! ( v. as_slice( ) == [ ] ) ;
1863
+ } )
1864
+ }
1865
+
1866
+
1867
+ #[ bench]
1868
+ fn bench_with_capacity_5 ( b : & mut Bencher ) {
1869
+ b. iter ( || {
1870
+ let v: Vec < int > = Vec :: with_capacity ( 5 ) ;
1871
+ assert_eq ! ( v. capacity( ) , 5 ) ;
1872
+ assert ! ( v. as_slice( ) == [ ] ) ;
1873
+ } )
1874
+ }
1875
+
1876
+ #[ bench]
1877
+ fn bench_with_capacity_100 ( b : & mut Bencher ) {
1878
+ b. iter ( || {
1879
+ let v: Vec < int > = Vec :: with_capacity ( 100 ) ;
1880
+ assert_eq ! ( v. capacity( ) , 100 ) ;
1881
+ assert ! ( v. as_slice( ) == [ ] ) ;
1882
+ } )
1883
+ }
1884
+
1885
+ #[ bench]
1886
+ fn bench_from_fn_0 ( b : & mut Bencher ) {
1887
+ b. iter ( || {
1888
+ let v: Vec < int > = Vec :: from_fn ( 0 , |_| 5 ) ;
1889
+ assert ! ( v. as_slice( ) == [ ] ) ;
1890
+ } )
1891
+ }
1892
+
1893
+ #[ bench]
1894
+ fn bench_from_fn_5 ( b : & mut Bencher ) {
1895
+ b. iter ( || {
1896
+ let v: Vec < int > = Vec :: from_fn ( 5 , |_| 5 ) ;
1897
+ assert ! ( v. as_slice( ) == [ 5 , 5 , 5 , 5 , 5 ] ) ;
1898
+ } )
1899
+ }
1900
+
1901
+ #[ bench]
1902
+ fn bench_from_slice_0 ( b : & mut Bencher ) {
1903
+ b. iter ( || {
1904
+ let v: Vec < int > = Vec :: from_slice ( [ ] ) ;
1905
+ assert ! ( v. as_slice( ) == [ ] ) ;
1906
+ } )
1907
+ }
1908
+
1909
+ #[ bench]
1910
+ fn bench_from_slice_5 ( b : & mut Bencher ) {
1911
+ b. iter ( || {
1912
+ let v: Vec < int > = Vec :: from_slice ( [ 1 , 2 , 3 , 4 , 5 ] ) ;
1913
+ assert ! ( v. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1914
+ } )
1915
+ }
1916
+
1917
+ #[ bench]
1918
+ fn bench_from_iter_0 ( b : & mut Bencher ) {
1919
+ b. iter ( || {
1920
+ let v0: Vec < int > = vec ! ( ) ;
1921
+ let v1: Vec < int > = FromIterator :: from_iter ( v0. move_iter ( ) ) ;
1922
+ assert ! ( v1. as_slice( ) == [ ] ) ;
1923
+ } )
1924
+ }
1925
+
1926
+ #[ bench]
1927
+ fn bench_from_iter_5 ( b : & mut Bencher ) {
1928
+ b. iter ( || {
1929
+ let v0: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1930
+ let v1: Vec < int > = FromIterator :: from_iter ( v0. move_iter ( ) ) ;
1931
+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1932
+ } )
1933
+ }
1934
+
1935
+ #[ bench]
1936
+ fn bench_extend_0 ( b : & mut Bencher ) {
1937
+ b. iter ( || {
1938
+ let v0: Vec < int > = vec ! ( ) ;
1939
+ let mut v1: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1940
+ v1. extend ( v0. move_iter ( ) ) ;
1941
+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1942
+ } )
1943
+ }
1944
+
1945
+ #[ bench]
1946
+ fn bench_extend_5 ( b : & mut Bencher ) {
1947
+ b. iter ( || {
1948
+ let v0: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1949
+ let mut v1: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1950
+ v1. extend ( v0. move_iter ( ) ) ;
1951
+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 , 1 , 2 , 3 , 4 , 5 ] ) ;
1952
+ } )
1953
+ }
1839
1954
}
0 commit comments