Skip to content

Commit 2dd6bc6

Browse files
committed
Implement Index for TreeMap
1 parent 32f5898 commit 2dd6bc6

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

src/libcollections/treemap.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,20 @@ impl<K: Ord, V> Default for TreeMap<K,V> {
237237
fn default() -> TreeMap<K, V> { TreeMap::new() }
238238
}
239239

240+
impl<K: Ord, V> Index<K, V> for TreeMap<K, V> {
241+
#[inline]
242+
fn index<'a>(&'a self, i: &K) -> &'a V {
243+
self.find(i).expect("no entry found for key")
244+
}
245+
}
246+
247+
/*impl<K: Ord, V> IndexMut<K, V> for TreeMap<K, V> {
248+
#[inline]
249+
fn index_mut<'a>(&'a mut self, i: &K) -> &'a mut V {
250+
self.find_mut(i).expect("no entry found for key")
251+
}
252+
}*/
253+
240254
impl<K: Ord, V> TreeMap<K, V> {
241255
/// Create an empty `TreeMap`.
242256
///
@@ -2131,6 +2145,28 @@ mod test_treemap {
21312145
}
21322146
}
21332147

2148+
#[test]
2149+
fn test_index() {
2150+
let mut map: TreeMap<int, int> = TreeMap::new();
2151+
2152+
map.insert(1, 2);
2153+
map.insert(2, 1);
2154+
map.insert(3, 4);
2155+
2156+
assert_eq!(map[2], 1);
2157+
}
2158+
2159+
#[test]
2160+
#[should_fail]
2161+
fn test_index_nonexistent() {
2162+
let mut map: TreeMap<int, int> = TreeMap::new();
2163+
2164+
map.insert(1, 2);
2165+
map.insert(2, 1);
2166+
map.insert(3, 4);
2167+
2168+
map[4];
2169+
}
21342170
}
21352171

21362172
#[cfg(test)]

0 commit comments

Comments
 (0)