From d36a8f3f9c70c63ed9042d83cdc47392d12b3886 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 11 Jul 2014 10:12:38 -0700 Subject: collections: Move push/pop to MutableSeq Implement for Vec, DList, RingBuf. Add MutableSeq to the prelude. Since the collections traits are in the prelude most consumers of these methods will continue to work without change. [breaking-change] --- src/libstd/collections/mod.rs | 2 +- src/libstd/dynamic_lib.rs | 1 + src/libstd/io/extensions.rs | 2 +- src/libstd/io/fs.rs | 2 +- src/libstd/io/signal.rs | 1 + src/libstd/lib.rs | 2 ++ src/libstd/macros.rs | 3 +++ src/libstd/num/strconv.rs | 2 +- src/libstd/os.rs | 2 +- src/libstd/path/mod.rs | 2 +- src/libstd/path/posix.rs | 2 +- src/libstd/path/windows.rs | 2 +- src/libstd/prelude.rs | 2 +- 13 files changed, 16 insertions(+), 9 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/collections/mod.rs b/src/libstd/collections/mod.rs index ccef1c0fd2a..d98d490a84b 100644 --- a/src/libstd/collections/mod.rs +++ b/src/libstd/collections/mod.rs @@ -15,7 +15,7 @@ #![experimental] pub use core_collections::{Collection, Mutable, Map, MutableMap}; -pub use core_collections::{Set, MutableSet, Deque}; +pub use core_collections::{Set, MutableSet, Deque, MutableSeq}; pub use core_collections::{Bitv, BitvSet, BTree, DList, EnumSet}; pub use core_collections::{PriorityQueue, RingBuf, SmallIntMap}; pub use core_collections::{TreeMap, TreeSet, TrieMap, TrieSet}; diff --git a/src/libstd/dynamic_lib.rs b/src/libstd/dynamic_lib.rs index 86283f03381..5980245fa79 100644 --- a/src/libstd/dynamic_lib.rs +++ b/src/libstd/dynamic_lib.rs @@ -20,6 +20,7 @@ A simple wrapper over the platform's dynamic library facilities #![allow(missing_doc)] use clone::Clone; +use collections::MutableSeq; use c_str::ToCStr; use iter::Iterator; use mem; diff --git a/src/libstd/io/extensions.rs b/src/libstd/io/extensions.rs index ca3eee01575..5215aec5dfb 100644 --- a/src/libstd/io/extensions.rs +++ b/src/libstd/io/extensions.rs @@ -15,7 +15,7 @@ // FIXME: Not sure how this should be structured // FIXME: Iteration should probably be considered separately -use collections::Collection; +use collections::{Collection, MutableSeq}; use iter::Iterator; use option::{Option, Some, None}; use result::{Ok, Err}; diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index afd88ee0ed9..c7dec49a76d 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -53,7 +53,7 @@ fs::unlink(&path); use c_str::ToCStr; use clone::Clone; -use collections::Collection; +use collections::{Collection, MutableSeq}; use io::standard_error; use io::{FilePermission, Write, UnstableFileStat, Open, FileAccess, FileMode}; use io::{IoResult, IoError, FileStat, SeekStyle, Seek, Writer, Reader}; diff --git a/src/libstd/io/signal.rs b/src/libstd/io/signal.rs index d46f437cddd..c126866e715 100644 --- a/src/libstd/io/signal.rs +++ b/src/libstd/io/signal.rs @@ -20,6 +20,7 @@ definitions for a number of signals. */ use clone::Clone; +use collections::MutableSeq; use comm::{Sender, Receiver, channel}; use io; use iter::Iterator; diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index e14092bc8dc..125c3fdf5d9 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -288,4 +288,6 @@ mod std { #[cfg(test)] pub use os = realstd::os; // The test runner requires std::slice::Vector, so re-export std::slice just for it. #[cfg(test)] pub use slice; + + pub use collections; // vec!() uses MutableSeq } diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs index 3c6c860f516..6de6b9d680f 100644 --- a/src/libstd/macros.rs +++ b/src/libstd/macros.rs @@ -315,6 +315,9 @@ macro_rules! try( #[macro_export] macro_rules! vec( ($($e:expr),*) => ({ + #[allow(unused_imports)] + use std::collections::MutableSeq; + // leading _ to allow empty construction without a warning. let mut _temp = ::std::vec::Vec::new(); $(_temp.push($e);)* diff --git a/src/libstd/num/strconv.rs b/src/libstd/num/strconv.rs index cc30acf064b..c8528e752e8 100644 --- a/src/libstd/num/strconv.rs +++ b/src/libstd/num/strconv.rs @@ -14,7 +14,7 @@ use char; use clone::Clone; -use collections::Collection; +use collections::{Collection, MutableSeq}; use num::{NumCast, Zero, One, cast, Int}; use num::{Float, FPNaN, FPInfinite, ToPrimitive}; use num; diff --git a/src/libstd/os.rs b/src/libstd/os.rs index 96d3b3e3e6a..f71f1d22d00 100644 --- a/src/libstd/os.rs +++ b/src/libstd/os.rs @@ -32,7 +32,7 @@ #![allow(non_snake_case_functions)] use clone::Clone; -use collections::Collection; +use collections::{Collection, MutableSeq}; use fmt; use io::{IoResult, IoError}; use iter::Iterator; diff --git a/src/libstd/path/mod.rs b/src/libstd/path/mod.rs index ececfab5f74..0c93f8e6de9 100644 --- a/src/libstd/path/mod.rs +++ b/src/libstd/path/mod.rs @@ -65,7 +65,7 @@ println!("path exists: {}", path.exists()); #![experimental] -use collections::Collection; +use collections::{Collection, MutableSeq}; use c_str::CString; use clone::Clone; use fmt; diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs index 007686aa05c..877ca2c7e01 100644 --- a/src/libstd/path/posix.rs +++ b/src/libstd/path/posix.rs @@ -13,7 +13,7 @@ use c_str::{CString, ToCStr}; use clone::Clone; use cmp::{PartialEq, Eq, PartialOrd, Ord, Ordering}; -use collections::Collection; +use collections::{Collection, MutableSeq}; use from_str::FromStr; use hash; use io::Writer; diff --git a/src/libstd/path/windows.rs b/src/libstd/path/windows.rs index 4a6ed561233..d9b802b38fd 100644 --- a/src/libstd/path/windows.rs +++ b/src/libstd/path/windows.rs @@ -16,7 +16,7 @@ use ascii::AsciiCast; use c_str::{CString, ToCStr}; use clone::Clone; use cmp::{PartialEq, Eq, PartialOrd, Ord, Ordering}; -use collections::Collection; +use collections::{Collection, MutableSeq}; use from_str::FromStr; use hash; use io::Writer; diff --git a/src/libstd/prelude.rs b/src/libstd/prelude.rs index 0fa223305a6..0ce7497cf30 100644 --- a/src/libstd/prelude.rs +++ b/src/libstd/prelude.rs @@ -63,7 +63,7 @@ #[doc(no_inline)] pub use clone::Clone; #[doc(no_inline)] pub use cmp::{PartialEq, PartialOrd, Eq, Ord}; #[doc(no_inline)] pub use cmp::{Ordering, Less, Equal, Greater, Equiv}; -#[doc(no_inline)] pub use collections::{Collection, Mutable, Map, MutableMap}; +#[doc(no_inline)] pub use collections::{Collection, Mutable, Map, MutableMap, MutableSeq}; #[doc(no_inline)] pub use collections::{Set, MutableSet}; #[doc(no_inline)] pub use iter::{FromIterator, Extendable, ExactSize}; #[doc(no_inline)] pub use iter::{Iterator, DoubleEndedIterator}; -- cgit 1.4.1-3-g733a5 From 054b1ff989e278ad1ea278c87beda25a8587d367 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 14 Jul 2014 14:45:10 -0700 Subject: Remove kludgy imports from vec! macro --- src/libcollections/bitv.rs | 2 +- src/libcollections/btree.rs | 2 ++ src/libcollections/enum_set.rs | 2 ++ src/libcollections/macros.rs | 18 ------------------ src/libcollections/ringbuf.rs | 2 +- src/libcollections/smallintmap.rs | 2 +- src/libcollections/str.rs | 4 +++- src/libcollections/treemap.rs | 2 +- src/libcollections/trie.rs | 4 ++-- src/libstd/io/net/tcp.rs | 1 + src/libstd/macros.rs | 3 --- 11 files changed, 14 insertions(+), 28 deletions(-) (limited to 'src/libstd') diff --git a/src/libcollections/bitv.rs b/src/libcollections/bitv.rs index e7190a810e4..44af3d52db9 100644 --- a/src/libcollections/bitv.rs +++ b/src/libcollections/bitv.rs @@ -1574,7 +1574,7 @@ mod tests { use std::rand::Rng; use test::Bencher; - use {Set, Mutable, MutableSet}; + use {Set, Mutable, MutableSet, MutableSeq}; use bitv::{Bitv, BitvSet, from_fn, from_bytes}; use bitv; use vec::Vec; diff --git a/src/libcollections/btree.rs b/src/libcollections/btree.rs index 096b0c7f517..947c87daa84 100644 --- a/src/libcollections/btree.rs +++ b/src/libcollections/btree.rs @@ -782,6 +782,8 @@ mod test_btree { use super::{BTree, Node, LeafElt}; + use MutableSeq; + //Tests the functionality of the insert methods (which are unfinished). #[test] fn insert_test_one() { diff --git a/src/libcollections/enum_set.rs b/src/libcollections/enum_set.rs index 1360b412c23..ca3f6a746f3 100644 --- a/src/libcollections/enum_set.rs +++ b/src/libcollections/enum_set.rs @@ -141,6 +141,8 @@ mod test { use enum_set::{EnumSet, CLike}; + use MutableSeq; + #[deriving(PartialEq, Show)] #[repr(uint)] enum Foo { diff --git a/src/libcollections/macros.rs b/src/libcollections/macros.rs index 0e4b46cfc56..db062a70bbb 100644 --- a/src/libcollections/macros.rs +++ b/src/libcollections/macros.rs @@ -11,26 +11,8 @@ #![macro_escape] /// Create a `std::vec::Vec` containing the arguments. -#[cfg(not(test))] macro_rules! vec( ($($e:expr),*) => ({ - #[allow(unused_imports)] - use std::collections::MutableSeq; - - // leading _ to allow empty construction without a warning. - let mut _temp = ::vec::Vec::new(); - $(_temp.push($e);)* - _temp - }); - ($($e:expr),+,) => (vec!($($e),+)) -) - -#[cfg(test)] -macro_rules! vec( - ($($e:expr),*) => ({ - #[allow(unused_imports)] - use MutableSeq; - // leading _ to allow empty construction without a warning. let mut _temp = ::vec::Vec::new(); $(_temp.push($e);)* diff --git a/src/libcollections/ringbuf.rs b/src/libcollections/ringbuf.rs index c56781ec30b..3a4e66b38ae 100644 --- a/src/libcollections/ringbuf.rs +++ b/src/libcollections/ringbuf.rs @@ -422,7 +422,7 @@ mod tests { use test::Bencher; use test; - use {Deque, Mutable}; + use {Deque, Mutable, MutableSeq}; use super::RingBuf; use vec::Vec; diff --git a/src/libcollections/smallintmap.rs b/src/libcollections/smallintmap.rs index ca62b1235d5..eb97215c721 100644 --- a/src/libcollections/smallintmap.rs +++ b/src/libcollections/smallintmap.rs @@ -22,7 +22,7 @@ use core::fmt; use core::iter::{Enumerate, FilterMap}; use core::mem::replace; -use {Collection, Mutable, Map, MutableMap}; +use {Collection, Mutable, Map, MutableMap, MutableSeq}; use {vec, slice}; use vec::Vec; diff --git a/src/libcollections/str.rs b/src/libcollections/str.rs index 653f6bae26c..c0e903677de 100644 --- a/src/libcollections/str.rs +++ b/src/libcollections/str.rs @@ -562,6 +562,8 @@ pub mod raw { use string::String; use vec::Vec; + use MutableSeq; + pub use core::str::raw::{from_utf8, c_str_to_static_slice, slice_bytes}; pub use core::str::raw::{slice_unchecked}; @@ -818,7 +820,7 @@ mod tests { use std::option::{Some, None}; use std::ptr::RawPtr; use std::iter::{Iterator, DoubleEndedIterator}; - use Collection; + use {Collection, MutableSeq}; use super::*; use std::slice::{Vector, ImmutableVector}; diff --git a/src/libcollections/treemap.rs b/src/libcollections/treemap.rs index 124209ba52e..5658d07a1d1 100644 --- a/src/libcollections/treemap.rs +++ b/src/libcollections/treemap.rs @@ -1659,7 +1659,7 @@ mod test_set { use std::prelude::*; use std::hash; - use {Set, MutableSet, Mutable, MutableMap}; + use {Set, MutableSet, Mutable, MutableMap, MutableSeq}; use super::{TreeMap, TreeSet}; #[test] diff --git a/src/libcollections/trie.rs b/src/libcollections/trie.rs index 424cda92c12..5a00c4b85da 100644 --- a/src/libcollections/trie.rs +++ b/src/libcollections/trie.rs @@ -682,7 +682,7 @@ mod test_map { use std::uint; use std::hash; - use {MutableMap, Map}; + use {MutableMap, Map, MutableSeq}; use super::{TrieMap, TrieNode, Internal, External, Nothing}; fn check_integrity(trie: &TrieNode) { @@ -1105,7 +1105,7 @@ mod test_set { use std::prelude::*; use std::uint; - use {MutableSet, Set}; + use {MutableSet, Set, MutableSeq}; use super::TrieSet; #[test] diff --git a/src/libstd/io/net/tcp.rs b/src/libstd/io/net/tcp.rs index 642654ba6ed..cb754135bc1 100644 --- a/src/libstd/io/net/tcp.rs +++ b/src/libstd/io/net/tcp.rs @@ -18,6 +18,7 @@ //! listener (socket server) implements the `Listener` and `Acceptor` traits. use clone::Clone; +use collections::MutableSeq; use io::IoResult; use iter::Iterator; use slice::ImmutableVector; diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs index 6de6b9d680f..3c6c860f516 100644 --- a/src/libstd/macros.rs +++ b/src/libstd/macros.rs @@ -315,9 +315,6 @@ macro_rules! try( #[macro_export] macro_rules! vec( ($($e:expr),*) => ({ - #[allow(unused_imports)] - use std::collections::MutableSeq; - // leading _ to allow empty construction without a warning. let mut _temp = ::std::vec::Vec::new(); $(_temp.push($e);)* -- cgit 1.4.1-3-g733a5 From 71a75cc2ce6d6eed2557e6c585e81abcdad86827 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 20 Jul 2014 17:57:29 -0700 Subject: Just land already --- src/libcollections/dlist.rs | 46 +++++++++++++++++++-------------------- src/libcollections/lib.rs | 36 +++++++++++++++--------------- src/libcollections/string.rs | 2 +- src/libcollections/vec.rs | 2 +- src/libstd/collections/hashmap.rs | 2 +- 5 files changed, 44 insertions(+), 44 deletions(-) (limited to 'src/libstd') diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs index 19488ee9f85..68b6416b69b 100644 --- a/src/libcollections/dlist.rs +++ b/src/libcollections/dlist.rs @@ -279,12 +279,12 @@ impl DList { /// # Example /// /// ```rust - /// use std::collections::{DList, Deque}; + /// use std::collections::DList; /// /// let mut dl = DList::new(); - /// dl.push_back(1i); - /// dl.push_back(2); - /// dl.push_back(3); + /// dl.push(1i); + /// dl.push(2); + /// dl.push(3); /// /// dl.rotate_forward(); /// @@ -306,12 +306,12 @@ impl DList { /// # Example /// /// ```rust - /// use std::collections::{DList, Deque}; + /// use std::collections::DList; /// /// let mut dl = DList::new(); - /// dl.push_back(1i); - /// dl.push_back(2); - /// dl.push_back(3); + /// dl.push(1i); + /// dl.push(2); + /// dl.push(3); /// /// dl.rotate_backward(); /// @@ -333,14 +333,14 @@ impl DList { /// # Example /// /// ```rust - /// use std::collections::{DList, Deque}; + /// use std::collections::DList; /// /// let mut a = DList::new(); /// let mut b = DList::new(); - /// a.push_back(1i); - /// a.push_back(2); - /// b.push_back(3i); - /// b.push_back(4); + /// a.push(1i); + /// a.push(2); + /// b.push(3i); + /// b.push(4); /// /// a.append(b); /// @@ -374,14 +374,14 @@ impl DList { /// # Example /// /// ```rust - /// use std::collections::{DList, Deque}; + /// use std::collections::DList; /// /// let mut a = DList::new(); /// let mut b = DList::new(); - /// a.push_back(1i); - /// a.push_back(2); - /// b.push_back(3i); - /// b.push_back(4); + /// a.push(1i); + /// a.push(2); + /// b.push(3i); + /// b.push(4); /// /// a.prepend(b); /// @@ -403,13 +403,13 @@ impl DList { /// # Example /// /// ```rust - /// use std::collections::{DList, Deque}; + /// use std::collections::DList; /// /// let mut a: DList = DList::new(); - /// a.push_back(2i); - /// a.push_back(4); - /// a.push_back(7); - /// a.push_back(8); + /// a.push(2i); + /// a.push(4); + /// a.push(7); + /// a.push(8); /// /// // insert 11 before the first odd number in the list /// a.insert_when(11, |&e, _| e % 2 == 1); diff --git a/src/libcollections/lib.rs b/src/libcollections/lib.rs index 6882ad9a689..d2d8ad696d7 100644 --- a/src/libcollections/lib.rs +++ b/src/libcollections/lib.rs @@ -360,9 +360,9 @@ pub trait MutableSeq: Mutable { /// use std::collections::{RingBuf, Deque}; /// /// let mut queue = RingBuf::new(); -/// queue.push_back(1i); -/// queue.push_back(2i); -/// queue.push_back(3i); +/// queue.push(1i); +/// queue.push(2i); +/// queue.push(3i); /// /// // Will print 1, 2, 3 /// while !queue.is_empty() { @@ -398,13 +398,13 @@ pub trait MutableSeq: Mutable { /// // Init deque with 1, 2, 3, 4 /// deque.push_front(2i); /// deque.push_front(1i); -/// deque.push_back(3i); -/// deque.push_back(4i); +/// deque.push(3i); +/// deque.push(4i); /// /// // Will print (1, 4) and (2, 3) /// while !deque.is_empty() { /// let f = deque.pop_front().unwrap(); -/// let b = deque.pop_back().unwrap(); +/// let b = deque.pop().unwrap(); /// println!("{}", (f, b)); /// } /// ``` @@ -420,8 +420,8 @@ pub trait Deque : MutableSeq { /// let mut d = RingBuf::new(); /// assert_eq!(d.front(), None); /// - /// d.push_back(1i); - /// d.push_back(2i); + /// d.push(1i); + /// d.push(2i); /// assert_eq!(d.front(), Some(&1i)); /// ``` fn front<'a>(&'a self) -> Option<&'a T>; @@ -437,8 +437,8 @@ pub trait Deque : MutableSeq { /// let mut d = RingBuf::new(); /// assert_eq!(d.front_mut(), None); /// - /// d.push_back(1i); - /// d.push_back(2i); + /// d.push(1i); + /// d.push(2i); /// match d.front_mut() { /// Some(x) => *x = 9i, /// None => (), @@ -458,8 +458,8 @@ pub trait Deque : MutableSeq { /// let mut d = DList::new(); /// assert_eq!(d.back(), None); /// - /// d.push_back(1i); - /// d.push_back(2i); + /// d.push(1i); + /// d.push(2i); /// assert_eq!(d.back(), Some(&2i)); /// ``` fn back<'a>(&'a self) -> Option<&'a T>; @@ -475,8 +475,8 @@ pub trait Deque : MutableSeq { /// let mut d = DList::new(); /// assert_eq!(d.back(), None); /// - /// d.push_back(1i); - /// d.push_back(2i); + /// d.push(1i); + /// d.push(2i); /// match d.back_mut() { /// Some(x) => *x = 9i, /// None => (), @@ -503,7 +503,7 @@ pub trait Deque : MutableSeq { /// /// # Example /// - /// ``` + /// ```ignore /// use std::collections::{DList, Deque}; /// /// let mut d = DList::new(); @@ -518,7 +518,7 @@ pub trait Deque : MutableSeq { /// /// # Example /// - /// ``` + /// ```ignore /// use std::collections::{RingBuf, Deque}; /// /// let mut d = RingBuf::new(); @@ -540,8 +540,8 @@ pub trait Deque : MutableSeq { /// use std::collections::{RingBuf, Deque}; /// /// let mut d = RingBuf::new(); - /// d.push_back(1i); - /// d.push_back(2i); + /// d.push(1i); + /// d.push(2i); /// /// assert_eq!(d.pop_front(), Some(1i)); /// assert_eq!(d.pop_front(), Some(2i)); diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index 10cc446abcd..d58dfdd10d1 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -575,7 +575,7 @@ mod tests { use std::prelude::*; use test::Bencher; - use Mutable; + use {Mutable, MutableSeq}; use str; use str::{Str, StrSlice, Owned, Slice}; use super::String; diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 17b32e5699d..dcee92f6dbc 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -981,7 +981,7 @@ impl Vec { /// /// # Example /// - /// ``` + /// ```ignore /// let mut vec = vec![1i, 2, 3]; /// vec.unshift(4); /// assert_eq!(vec, vec![4, 1, 2, 3]); diff --git a/src/libstd/collections/hashmap.rs b/src/libstd/collections/hashmap.rs index a05fad3705d..922858e963c 100644 --- a/src/libstd/collections/hashmap.rs +++ b/src/libstd/collections/hashmap.rs @@ -1291,7 +1291,7 @@ impl, V, S, H: Hasher> HashMap { /// // new value based on the first letter of the key. /// |key, already, new| { /// if key.as_slice().starts_with("z") { - /// already.unshift(new); + /// already.insert(0, new); /// } else { /// already.push(new); /// } -- cgit 1.4.1-3-g733a5