// option. This file may not be copied, modified, or distributed
// except according to those terms.
-//! An "interner" is a data structure that associates values with uint tags and
+//! An "interner" is a data structure that associates values with usize tags and
//! allows bidirectional lookup; i.e. given a value, one can easily find the
//! type, and vice versa.
pub fn get(&self, idx: Name) -> T {
let vect = self.vect.borrow();
- (*vect)[idx.uint()].clone()
+ (*vect)[idx.usize()].clone()
}
- pub fn len(&self) -> uint {
+ pub fn len(&self) -> usize {
let vect = self.vect.borrow();
(*vect).len()
}
impl Ord for RcStr {
fn cmp(&self, other: &RcStr) -> Ordering {
- self.index(&FullRange).cmp(other.index(&FullRange))
+ self[].cmp(&other[])
}
}
-impl fmt::Show for RcStr {
+impl fmt::Debug for RcStr {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- use std::fmt::Show;
- self.index(&FullRange).fmt(f)
+ use std::fmt::Debug;
+ self[].fmt(f)
+ }
+}
+
+impl fmt::Display for RcStr {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ use std::fmt::Display;
+ self[].fmt(f)
}
}
impl BorrowFrom<RcStr> for str {
fn borrow_from(owned: &RcStr) -> &str {
- owned.string.index(&FullRange)
+ &owned.string[]
}
}
impl Deref for RcStr {
type Target = str;
- fn deref(&self) -> &str { self.string.index(&FullRange) }
+ fn deref(&self) -> &str { &self.string[] }
}
/// A StrInterner differs from Interner<String> in that it accepts
vect: RefCell<Vec<RcStr> >,
}
-/// When traits can extend traits, we should extend index<Name,T> to get .index(&FullRange)
+/// When traits can extend traits, we should extend index<Name,T> to get []
impl StrInterner {
pub fn new() -> StrInterner {
StrInterner {
let new_idx = Name(self.len() as u32);
// leave out of map to avoid colliding
let mut vect = self.vect.borrow_mut();
- let existing = (*vect)[idx.uint()].clone();
+ let existing = (*vect)[idx.usize()].clone();
vect.push(existing);
new_idx
}
pub fn get(&self, idx: Name) -> RcStr {
- (*self.vect.borrow())[idx.uint()].clone()
+ (*self.vect.borrow())[idx.usize()].clone()
}
- pub fn len(&self) -> uint {
+ pub fn len(&self) -> usize {
self.vect.borrow().len()
}