diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-07-27 14:51:19 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-07-27 14:52:46 -0700 |
| commit | 01e2471cb7bc7f84863bdb0d67cfa2af16d54f9e (patch) | |
| tree | dd3e607ce180e39a3f1a6ee9bf123fda13db3dbd /src/libstd | |
| parent | b6aadf56c8a6e603c79a8924e6a92398471de8cf (diff) | |
| download | rust-01e2471cb7bc7f84863bdb0d67cfa2af16d54f9e.tar.gz rust-01e2471cb7bc7f84863bdb0d67cfa2af16d54f9e.zip | |
core: Trait-ify various overloaded operators
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/bitv.rs | 10 | ||||
| -rw-r--r-- | src/libstd/map.rs | 8 | ||||
| -rw-r--r-- | src/libstd/smallintmap.rs | 12 |
3 files changed, 26 insertions, 4 deletions
diff --git a/src/libstd/bitv.rs b/src/libstd/bitv.rs index adb7f56ef3b..145ceba4ae5 100644 --- a/src/libstd/bitv.rs +++ b/src/libstd/bitv.rs @@ -239,7 +239,7 @@ trait methods { fn union(rhs: bitv) -> bool; fn intersect(rhs: bitv) -> bool; fn assign(rhs: bitv) -> bool; - fn get(i: uint) -> bool; + pure fn get(i: uint) -> bool; fn [](i: uint) -> bool; fn eq(rhs: bitv) -> bool; fn clear(); @@ -261,7 +261,7 @@ impl of methods for bitv { fn union(rhs: bitv) -> bool { union(self, rhs) } fn intersect(rhs: bitv) -> bool { intersect(self, rhs) } fn assign(rhs: bitv) -> bool { assign(self, rhs) } - fn get(i: uint) -> bool { get(self, i) } + pure fn get(i: uint) -> bool { get(self, i) } fn [](i: uint) -> bool { self.get(i) } fn eq(rhs: bitv) -> bool { equal(self, rhs) } fn clear() { clear(self) } @@ -285,6 +285,12 @@ impl of methods for bitv { } } +impl extensions of ops::index<uint,bool> for bitv { + pure fn index(&&i: uint) -> bool { + self.get(i) + } +} + impl of to_str::to_str for bitv { fn to_str() -> ~str { to_str(self) } } diff --git a/src/libstd/map.rs b/src/libstd/map.rs index afb5f28ae08..2522c9d5876 100644 --- a/src/libstd/map.rs +++ b/src/libstd/map.rs @@ -314,6 +314,14 @@ mod chained { } } + impl hashmap<K, V: copy> of ops::index<K, V> for t<K, V> { + pure fn index(k: K) -> V { + unchecked { + self.get(k) + } + } + } + fn chains<K,V>(nchains: uint) -> ~[mut chain<K,V>] { ret vec::to_mut(vec::from_elem(nchains, absent)); diff --git a/src/libstd/smallintmap.rs b/src/libstd/smallintmap.rs index 02948f58fc4..0325ef3ac2e 100644 --- a/src/libstd/smallintmap.rs +++ b/src/libstd/smallintmap.rs @@ -35,7 +35,7 @@ fn insert<T: copy>(self: smallintmap<T>, key: uint, val: T) { * Get the value for the specified key. If the key does not exist * in the map then returns none */ -fn find<T: copy>(self: smallintmap<T>, key: uint) -> option<T> { +pure fn find<T: copy>(self: smallintmap<T>, key: uint) -> option<T> { if key < self.v.len() { ret self.v.get_elt(key); } ret none::<T>; } @@ -47,7 +47,7 @@ fn find<T: copy>(self: smallintmap<T>, key: uint) -> option<T> { * * If the key does not exist in the map */ -fn get<T: copy>(self: smallintmap<T>, key: uint) -> T { +pure fn get<T: copy>(self: smallintmap<T>, key: uint) -> T { alt find(self, key) { none { #error("smallintmap::get(): key not present"); fail; } some(v) { ret v; } @@ -114,6 +114,14 @@ impl <V: copy> of map::map<uint, V> for smallintmap<V> { } } +impl extensions<V: copy> of ops::index<uint, V> for smallintmap<V> { + pure fn index(&&key: uint) -> V { + unchecked { + get(self, key) + } + } +} + /// Cast the given smallintmap to a map::map fn as_map<V: copy>(s: smallintmap<V>) -> map::map<uint, V> { s as map::map::<uint, V> |
