Skip to content

Commit 0f434b9

Browse files
gwillengraydon
authored andcommitted
---
yaml --- r: 20572 b: refs/heads/snap-stage3 c: 28519c8 h: refs/heads/master v: v3
1 parent 64859a3 commit 0f434b9

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,7 +1,7 @@
11
---
22
refs/heads/master: e430a699f2c60890d9b86069fd0c68a70ece7120
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 06ac0c2b1da2592c53462e1d3675bf1198175aed
4+
refs/heads/snap-stage3: 28519c8ef64dc37ceab23d6a26a4ccea7f396a00
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/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)