diff options
| author | bors <bors@rust-lang.org> | 2014-12-23 02:41:48 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-12-23 02:41:48 +0000 |
| commit | 62fb41c32bd97c4e9bc286a1db5d7126a06b8b91 (patch) | |
| tree | fc1c7ab2bf1a29879d45235acaf0126ceae4d107 /src/libsyntax/util | |
| parent | 2f3cff6956d56048ef7afb6d33e17cbdb2dcf038 (diff) | |
| parent | 3583d613b9c81855feb067aeeebb525cf8a4184c (diff) | |
| download | rust-62fb41c32bd97c4e9bc286a1db5d7126a06b8b91.tar.gz rust-62fb41c32bd97c4e9bc286a1db5d7126a06b8b91.zip | |
auto merge of #20145 : alexcrichton/rust/rollup, r=alexcrichton
Diffstat (limited to 'src/libsyntax/util')
| -rw-r--r-- | src/libsyntax/util/interner.rs | 30 | ||||
| -rw-r--r-- | src/libsyntax/util/small_vector.rs | 18 |
2 files changed, 22 insertions, 26 deletions
diff --git a/src/libsyntax/util/interner.rs b/src/libsyntax/util/interner.rs index 590a04ce221..97eb4316583 100644 --- a/src/libsyntax/util/interner.rs +++ b/src/libsyntax/util/interner.rs @@ -95,41 +95,37 @@ pub struct RcStr { string: Rc<String>, } +impl RcStr { + pub fn new(string: &str) -> RcStr { + RcStr { + string: Rc::new(string.to_string()), + } + } +} + impl Eq for RcStr {} impl Ord for RcStr { fn cmp(&self, other: &RcStr) -> Ordering { - self.as_slice().cmp(other.as_slice()) - } -} - -impl Str for RcStr { - #[inline] - fn as_slice<'a>(&'a self) -> &'a str { - let s: &'a str = self.string.as_slice(); - s + self[].cmp(other[]) } } impl fmt::Show for RcStr { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { use std::fmt::Show; - self.as_slice().fmt(f) + self[].fmt(f) } } impl BorrowFrom<RcStr> for str { fn borrow_from(owned: &RcStr) -> &str { - owned.string.as_slice() + owned.string[] } } -impl RcStr { - pub fn new(string: &str) -> RcStr { - RcStr { - string: Rc::new(string.into_string()), - } - } +impl Deref<str> for RcStr { + fn deref(&self) -> &str { self.string[] } } /// A StrInterner differs from Interner<String> in that it accepts diff --git a/src/libsyntax/util/small_vector.rs b/src/libsyntax/util/small_vector.rs index 8d050e34abf..946181770c8 100644 --- a/src/libsyntax/util/small_vector.rs +++ b/src/libsyntax/util/small_vector.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. use self::SmallVectorRepr::*; -use self::MoveItemsRepr::*; +use self::IntoIterRepr::*; use std::mem; use std::slice; @@ -111,17 +111,17 @@ impl<T> SmallVector<T> { /// Deprecated: use `into_iter`. #[deprecated = "use into_iter"] - pub fn move_iter(self) -> MoveItems<T> { + pub fn move_iter(self) -> IntoIter<T> { self.into_iter() } - pub fn into_iter(self) -> MoveItems<T> { + pub fn into_iter(self) -> IntoIter<T> { let repr = match self.repr { Zero => ZeroIterator, One(v) => OneIterator(v), Many(vs) => ManyIterator(vs.into_iter()) }; - MoveItems { repr: repr } + IntoIter { repr: repr } } pub fn len(&self) -> uint { @@ -135,17 +135,17 @@ impl<T> SmallVector<T> { pub fn is_empty(&self) -> bool { self.len() == 0 } } -pub struct MoveItems<T> { - repr: MoveItemsRepr<T>, +pub struct IntoIter<T> { + repr: IntoIterRepr<T>, } -enum MoveItemsRepr<T> { +enum IntoIterRepr<T> { ZeroIterator, OneIterator(T), - ManyIterator(vec::MoveItems<T>), + ManyIterator(vec::IntoIter<T>), } -impl<T> Iterator<T> for MoveItems<T> { +impl<T> Iterator<T> for IntoIter<T> { fn next(&mut self) -> Option<T> { match self.repr { ZeroIterator => None, |
