diff --git a/src/doc/guide-container.md b/src/doc/guide-container.md index 6a54dc7ea18..1ab92d45378 100644 --- a/src/doc/guide-container.md +++ b/src/doc/guide-container.md @@ -266,8 +266,8 @@ Iterators offer generic conversion to containers with the `collect` adaptor: ~~~ let xs = [0, 1, 1, 2, 3, 5, 8]; -let ys = xs.iter().rev().skip(1).map(|&x| x * 2).collect::<~[int]>(); -assert_eq!(ys, ~[10, 6, 4, 2, 2, 0]); +let ys = xs.iter().rev().skip(1).map(|&x| x * 2).collect::>(); +assert_eq!(ys, vec![10, 6, 4, 2, 2, 0]); ~~~ The method requires a type hint for the container type, if the surrounding code @@ -278,14 +278,14 @@ implementing the `FromIterator` trait. For example, the implementation for vectors is as follows: ~~~ {.ignore} -impl FromIterator for ~[A] { - pub fn from_iter>(iterator: &mut T) -> ~[A] { +impl FromIterator for Vec { + fn from_iter>(mut iterator: I) -> Vec { let (lower, _) = iterator.size_hint(); - let mut xs = with_capacity(lower); - for x in iterator { - xs.push(x); + let mut vector = Vec::with_capacity(lower); + for element in iterator { + vector.push(element); } - xs + vector } } ~~~ diff --git a/src/doc/rust.md b/src/doc/rust.md index 9a9e3747963..1158044ae19 100644 --- a/src/doc/rust.md +++ b/src/doc/rust.md @@ -3598,18 +3598,18 @@ and the cast expression in `main`. Within the body of an item that has type parameter declarations, the names of its type parameters are types: ~~~~ -fn map(f: |A| -> B, xs: &[A]) -> ~[B] { +fn map(f: |A| -> B, xs: &[A]) -> Vec { if xs.len() == 0 { - return ~[]; + return vec![]; } let first: B = f(xs[0].clone()); - let rest: ~[B] = map(f, xs.slice(1, xs.len())); - return ~[first] + rest; + let rest: Vec = map(f, xs.slice(1, xs.len())); + return [first] + rest; } ~~~~ Here, `first` has type `B`, referring to `map`'s `B` type parameter; -and `rest` has type `~[B]`, a vector type with element type `B`. +and `rest` has type `Vec`, a vector type with element type `B`. ### Self types diff --git a/src/doc/tutorial.md b/src/doc/tutorial.md index 56f9e8e5cbd..9b9153fe579 100644 --- a/src/doc/tutorial.md +++ b/src/doc/tutorial.md @@ -1588,8 +1588,8 @@ let mut numbers = vec![1, 2, 3]; numbers.push(4); numbers.push(5); -// The type of a unique vector is written as `~[int]` -let more_numbers: ~[int] = numbers.move_iter().collect(); +// The type of a unique vector is written as `Vec` +let more_numbers: Vec = numbers.move_iter().map(|i| i+1).collect(); // The original `numbers` value can no longer be used, due to move semantics. @@ -1633,7 +1633,7 @@ view[0] = 5; let ys: &mut [int] = &mut [1, 2, 3]; ~~~ -Square brackets denote indexing into a vector: +Square brackets denote indexing into a slice or fixed-size vector: ~~~~ # enum Crayon { Almond, AntiqueBrass, Apricot, @@ -1647,7 +1647,7 @@ match crayons[0] { } ~~~~ -A vector can be destructured using pattern matching: +A slice or fixed-size vector can be destructured using pattern matching: ~~~~ let numbers: &[int] = &[1, 2, 3]; @@ -1660,9 +1660,10 @@ let score = match numbers { ~~~~ Both vectors and strings support a number of useful [methods](#methods), -defined in [`std::vec`] and [`std::str`]. +defined in [`std::vec`], [`std::slice`], and [`std::str`]. [`std::vec`]: std/vec/index.html +[`std::slice`]: std/slice/index.html [`std::str`]: std/str/index.html # Ownership escape hatches diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index d47e12de239..10ae30cf39d 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -455,8 +455,8 @@ pub trait Iterator { /// /// ```rust /// let a = [1, 2, 3, 4, 5]; - /// let b: ~[int] = a.iter().map(|&x| x).collect(); - /// assert!(a == b); + /// let b: Vec = a.iter().map(|&x| x).collect(); + /// assert!(a.as_slice() == b.as_slice()); /// ``` #[inline] fn collect>(&mut self) -> B { diff --git a/src/libcore/str.rs b/src/libcore/str.rs index 9d9e12d0ad5..689f59b471c 100644 --- a/src/libcore/str.rs +++ b/src/libcore/str.rs @@ -621,12 +621,12 @@ impl<'a> Iterator for UTF16Items<'a> { /// 0x0073, 0xDD1E, 0x0069, 0x0063, /// 0xD834]; /// -/// assert_eq!(str::utf16_items(v).collect::<~[_]>(), -/// ~[ScalarValue('๐„ž'), -/// ScalarValue('m'), ScalarValue('u'), ScalarValue('s'), -/// LoneSurrogate(0xDD1E), -/// ScalarValue('i'), ScalarValue('c'), -/// LoneSurrogate(0xD834)]); +/// assert_eq!(str::utf16_items(v).collect::>(), +/// vec![ScalarValue('๐„ž'), +/// ScalarValue('m'), ScalarValue('u'), ScalarValue('s'), +/// LoneSurrogate(0xDD1E), +/// ScalarValue('i'), ScalarValue('c'), +/// LoneSurrogate(0xD834)]); /// ``` pub fn utf16_items<'a>(v: &'a [u16]) -> UTF16Items<'a> { UTF16Items { iter : v.iter() } @@ -896,8 +896,8 @@ pub trait StrSlice<'a> { /// # Example /// /// ```rust - /// let v: ~[char] = "abc รฅรครถ".chars().collect(); - /// assert_eq!(v, ~['a', 'b', 'c', ' ', 'รฅ', 'รค', 'รถ']); + /// let v: Vec = "abc รฅรครถ".chars().collect(); + /// assert_eq!(v, vec!['a', 'b', 'c', ' ', 'รฅ', 'รค', 'รถ']); /// ``` fn chars(&self) -> Chars<'a>; @@ -925,14 +925,14 @@ pub trait StrSlice<'a> { /// # Example /// /// ```rust - /// let v: ~[&str] = "Mary had a little lamb".split(' ').collect(); - /// assert_eq!(v, ~["Mary", "had", "a", "little", "lamb"]); + /// let v: Vec<&str> = "Mary had a little lamb".split(' ').collect(); + /// assert_eq!(v, vec!["Mary", "had", "a", "little", "lamb"]); /// - /// let v: ~[&str] = "abc1def2ghi".split(|c: char| c.is_digit()).collect(); - /// assert_eq!(v, ~["abc", "def", "ghi"]); + /// let v: Vec<&str> = "abc1def2ghi".split(|c: char| c.is_digit()).collect(); + /// assert_eq!(v, vec!["abc", "def", "ghi"]); /// - /// let v: ~[&str] = "lionXXtigerXleopard".split('X').collect(); - /// assert_eq!(v, ~["lion", "", "tiger", "leopard"]); + /// let v: Vec<&str> = "lionXXtigerXleopard".split('X').collect(); + /// assert_eq!(v, vec!["lion", "", "tiger", "leopard"]); /// ``` fn split(&self, sep: Sep) -> CharSplits<'a, Sep>; @@ -943,14 +943,14 @@ pub trait StrSlice<'a> { /// # Example /// /// ```rust - /// let v: ~[&str] = "Mary had a little lambda".splitn(' ', 2).collect(); - /// assert_eq!(v, ~["Mary", "had", "a little lambda"]); + /// let v: Vec<&str> = "Mary had a little lambda".splitn(' ', 2).collect(); + /// assert_eq!(v, vec!["Mary", "had", "a little lambda"]); /// - /// let v: ~[&str] = "abc1def2ghi".splitn(|c: char| c.is_digit(), 1).collect(); - /// assert_eq!(v, ~["abc", "def2ghi"]); + /// let v: Vec<&str> = "abc1def2ghi".splitn(|c: char| c.is_digit(), 1).collect(); + /// assert_eq!(v, vec!["abc", "def2ghi"]); /// - /// let v: ~[&str] = "lionXXtigerXleopard".splitn('X', 2).collect(); - /// assert_eq!(v, ~["lion", "", "tigerXleopard"]); + /// let v: Vec<&str> = "lionXXtigerXleopard".splitn('X', 2).collect(); + /// assert_eq!(v, vec!["lion", "", "tigerXleopard"]); /// ``` fn splitn(&self, sep: Sep, count: uint) -> CharSplitsN<'a, Sep>; @@ -963,20 +963,20 @@ pub trait StrSlice<'a> { /// # Example /// /// ```rust - /// let v: ~[&str] = "A.B.".split_terminator('.').collect(); - /// assert_eq!(v, ~["A", "B"]); + /// let v: Vec<&str> = "A.B.".split_terminator('.').collect(); + /// assert_eq!(v, vec!["A", "B"]); /// - /// let v: ~[&str] = "A..B..".split_terminator('.').collect(); - /// assert_eq!(v, ~["A", "", "B", ""]); + /// let v: Vec<&str> = "A..B..".split_terminator('.').collect(); + /// assert_eq!(v, vec!["A", "", "B", ""]); /// - /// let v: ~[&str] = "Mary had a little lamb".split(' ').rev().collect(); - /// assert_eq!(v, ~["lamb", "little", "a", "had", "Mary"]); + /// let v: Vec<&str> = "Mary had a little lamb".split(' ').rev().collect(); + /// assert_eq!(v, vec!["lamb", "little", "a", "had", "Mary"]); /// - /// let v: ~[&str] = "abc1def2ghi".split(|c: char| c.is_digit()).rev().collect(); - /// assert_eq!(v, ~["ghi", "def", "abc"]); + /// let v: Vec<&str> = "abc1def2ghi".split(|c: char| c.is_digit()).rev().collect(); + /// assert_eq!(v, vec!["ghi", "def", "abc"]); /// - /// let v: ~[&str] = "lionXXtigerXleopard".split('X').rev().collect(); - /// assert_eq!(v, ~["leopard", "tiger", "", "lion"]); + /// let v: Vec<&str> = "lionXXtigerXleopard".split('X').rev().collect(); + /// assert_eq!(v, vec!["leopard", "tiger", "", "lion"]); /// ``` fn split_terminator(&self, sep: Sep) -> CharSplits<'a, Sep>; @@ -991,14 +991,14 @@ pub trait StrSlice<'a> { /// # Example /// /// ```rust - /// let v: ~[&str] = "Mary had a little lamb".rsplitn(' ', 2).collect(); - /// assert_eq!(v, ~["lamb", "little", "Mary had a"]); + /// let v: Vec<&str> = "Mary had a little lamb".rsplitn(' ', 2).collect(); + /// assert_eq!(v, vec!["lamb", "little", "Mary had a"]); /// - /// let v: ~[&str] = "abc1def2ghi".rsplitn(|c: char| c.is_digit(), 1).collect(); - /// assert_eq!(v, ~["ghi", "abc1def"]); + /// let v: Vec<&str> = "abc1def2ghi".rsplitn(|c: char| c.is_digit(), 1).collect(); + /// assert_eq!(v, vec!["ghi", "abc1def"]); /// - /// let v: ~[&str] = "lionXXtigerXleopard".rsplitn('X', 2).collect(); - /// assert_eq!(v, ~["leopard", "tiger", "lionX"]); + /// let v: Vec<&str> = "lionXXtigerXleopard".rsplitn('X', 2).collect(); + /// assert_eq!(v, vec!["leopard", "tiger", "lionX"]); /// ``` fn rsplitn(&self, sep: Sep, count: uint) -> CharSplitsN<'a, Sep>; @@ -1013,14 +1013,14 @@ pub trait StrSlice<'a> { /// # Example /// /// ```rust - /// let v: ~[(uint, uint)] = "abcXXXabcYYYabc".match_indices("abc").collect(); - /// assert_eq!(v, ~[(0,3), (6,9), (12,15)]); + /// let v: Vec<(uint, uint)> = "abcXXXabcYYYabc".match_indices("abc").collect(); + /// assert_eq!(v, vec![(0,3), (6,9), (12,15)]); /// - /// let v: ~[(uint, uint)] = "1abcabc2".match_indices("abc").collect(); - /// assert_eq!(v, ~[(1,4), (4,7)]); + /// let v: Vec<(uint, uint)> = "1abcabc2".match_indices("abc").collect(); + /// assert_eq!(v, vec![(1,4), (4,7)]); /// - /// let v: ~[(uint, uint)] = "ababa".match_indices("aba").collect(); - /// assert_eq!(v, ~[(0, 3)]); // only the first `aba` + /// let v: Vec<(uint, uint)> = "ababa".match_indices("aba").collect(); + /// assert_eq!(v, vec![(0, 3)]); // only the first `aba` /// ``` fn match_indices(&self, sep: &'a str) -> MatchIndices<'a>; @@ -1029,11 +1029,11 @@ pub trait StrSlice<'a> { /// # Example /// /// ```rust - /// let v: ~[&str] = "abcXXXabcYYYabc".split_str("abc").collect(); - /// assert_eq!(v, ~["", "XXX", "YYY", ""]); + /// let v: Vec<&str> = "abcXXXabcYYYabc".split_str("abc").collect(); + /// assert_eq!(v, vec!["", "XXX", "YYY", ""]); /// - /// let v: ~[&str] = "1abcabc2".split_str("abc").collect(); - /// assert_eq!(v, ~["1", "", "2"]); + /// let v: Vec<&str> = "1abcabc2".split_str("abc").collect(); + /// assert_eq!(v, vec!["1", "", "2"]); /// ``` fn split_str(&self, &'a str) -> StrSplits<'a>; @@ -1045,8 +1045,8 @@ pub trait StrSlice<'a> { /// /// ```rust /// let four_lines = "foo\nbar\n\nbaz\n"; - /// let v: ~[&str] = four_lines.lines().collect(); - /// assert_eq!(v, ~["foo", "bar", "", "baz"]); + /// let v: Vec<&str> = four_lines.lines().collect(); + /// assert_eq!(v, vec!["foo", "bar", "", "baz"]); /// ``` fn lines(&self) -> CharSplits<'a, char>; @@ -1058,8 +1058,8 @@ pub trait StrSlice<'a> { /// /// ```rust /// let four_lines = "foo\r\nbar\n\r\nbaz\n"; - /// let v: ~[&str] = four_lines.lines_any().collect(); - /// assert_eq!(v, ~["foo", "bar", "", "baz"]); + /// let v: Vec<&str> = four_lines.lines_any().collect(); + /// assert_eq!(v, vec!["foo", "bar", "", "baz"]); /// ``` fn lines_any(&self) -> AnyLines<'a>; @@ -1071,8 +1071,8 @@ pub trait StrSlice<'a> { /// /// ```rust /// let some_words = " Mary had\ta little \n\t lamb"; - /// let v: ~[&str] = some_words.words().collect(); - /// assert_eq!(v, ~["Mary", "had", "a", "little", "lamb"]); + /// let v: Vec<&str> = some_words.words().collect(); + /// assert_eq!(v, vec!["Mary", "had", "a", "little", "lamb"]); /// ``` fn words(&self) -> Words<'a>; @@ -1469,7 +1469,8 @@ pub trait StrSlice<'a> { /// /// ```rust /// let string = "a\nb\nc"; - /// let lines: ~[&str] = string.lines().collect(); + /// let lines: Vec<&str> = string.lines().collect(); + /// let lines = lines.as_slice(); /// /// assert!(string.subslice_offset(lines[0]) == 0); // &"a" /// assert!(string.subslice_offset(lines[1]) == 2); // &"b" diff --git a/src/libgetopts/lib.rs b/src/libgetopts/lib.rs index 78c2b6c99e9..3de1dde240c 100644 --- a/src/libgetopts/lib.rs +++ b/src/libgetopts/lib.rs @@ -51,7 +51,7 @@ //! fn main() { //! let args = os::args(); //! -//! let program = args[0].clone(); +//! let program = args.get(0).clone(); //! //! let opts = [ //! optopt("o", "", "set output file name", "NAME"), diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index 56c0349d9eb..2e4d7696c44 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -166,14 +166,14 @@ use serialize::{json, Encodable, Decodable}; pub struct TestStruct1 { data_int: u8, data_str: ~str, - data_vector: ~[u8], + data_vector: Vec, } // To serialize use the `json::str_encode` to encode an object in a string. // It calls the generated `Encodable` impl. fn main() { let to_encode_object = TestStruct1 - {data_int: 1, data_str:"toto".to_owned(), data_vector:~[2,3,4,5]}; + {data_int: 1, data_str:"toto".to_owned(), data_vector:vec![2,3,4,5]}; let encoded_str: ~str = json::Encoder::str_encode(&to_encode_object); // To deserialize use the `json::from_str` and `json::Decoder` @@ -201,7 +201,7 @@ use collections::TreeMap; pub struct TestStruct1 { data_int: u8, data_str: ~str, - data_vector: ~[u8], + data_vector: Vec, } impl ToJson for TestStruct1 { @@ -218,7 +218,7 @@ fn main() { // Serialization using our impl of to_json let test2: TestStruct1 = TestStruct1 {data_int: 1, data_str:"toto".to_owned(), - data_vector:~[2,3,4,5]}; + data_vector:vec![2,3,4,5]}; let tjson: json::Json = test2.to_json(); let json_str: ~str = tjson.to_str(); diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index a89af05c50a..4a53a064610 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -76,7 +76,7 @@ Some examples of obvious things you might want to do let path = Path::new("message.txt"); let mut file = BufferedReader::new(File::open(&path)); - let lines: ~[~str] = file.lines().map(|x| x.unwrap()).collect(); + let lines: Vec<~str> = file.lines().map(|x| x.unwrap()).collect(); ``` * Make a simple TCP client connection and request