Skip to content

Commit b2bad2c

Browse files
gwillengraydon
authored andcommitted
---
yaml --- r: 22680 b: refs/heads/master c: 28519c8 h: refs/heads/master v: v3
1 parent 5b473ac commit b2bad2c

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 06ac0c2b1da2592c53462e1d3675bf1198175aed
2+
refs/heads/master: 28519c8ef64dc37ceab23d6a26a4ccea7f396a00
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be

trunk/src/libstd/map.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//! A map type
22
33
import chained::hashmap;
4+
import io::writer_util;
5+
import to_str::to_str;
46
export hashmap, hashfn, eqfn, set, map, chained, hashmap, str_hash;
57
export box_str_hash;
68
export bytes_hash, int_hash, uint_hash, set_add;
@@ -98,6 +100,7 @@ mod chained {
98100
hasher: hashfn<K>,
99101
eqer: eqfn<K>
100102
};
103+
type t<K, V> = @hashmap_<K, V>;
101104

102105
enum hashmap_<K, V> {
103106
hashmap_(@hashmap__<K, V>)
@@ -111,7 +114,7 @@ mod chained {
111114
found_after(@entry<K,V>, @entry<K,V>)
112115
}
113116

114-
impl private_methods<K, V: copy> for t<K, V> {
117+
impl private_methods<K, V: copy> for hashmap_<K, V> {
115118
fn search_rem(k: K, h: uint, idx: uint,
116119
e_root: @entry<K,V>) -> search_result<K,V> {
117120
let mut e0 = e_root;
@@ -285,6 +288,33 @@ mod chained {
285288
fn each_value(blk: fn(V) -> bool) { self.each(|_k, v| blk(v)) }
286289
}
287290

291+
impl hashmap<K: to_str, V: to_str copy> of to_str for hashmap_<K, V> {
292+
fn to_writer(wr: io::writer) {
293+
if self.count == 0u {
294+
wr.write_str("{}");
295+
ret;
296+
}
297+
298+
wr.write_str("{ ");
299+
let mut first = true;
300+
for self.each_entry |entry| {
301+
if !first {
302+
wr.write_str(", ");
303+
}
304+
first = false;
305+
wr.write_str(entry.key.to_str());
306+
wr.write_str(": ");
307+
wr.write_str((copy entry.value).to_str());
308+
};
309+
wr.write_str(" }");
310+
}
311+
312+
fn to_str() -> ~str {
313+
do io::with_str_writer |wr| { self.to_writer(wr) }
314+
}
315+
}
316+
317+
288318
fn chains<K,V>(nchains: uint) -> ~[mut chain<K,V>] {
289319
ret vec::to_mut(vec::from_elem(nchains, absent));
290320
}

0 commit comments

Comments
 (0)