On 30/04/12 07:08, Steven Blenkinsop wrote:
On Sunday, April 29, 2012, Gareth Smith wrote:

    Hi,

    I have written up some thoughts about a enabling a less
    repetitious API for constructing hashmaps (amongst other
    possibilities), here:
    https://github.com/mozilla/rust/wiki/Bikeshed-impl-method-extraction

    Does this make any sense?


Couldn't you just do something like:

fn hashmap <K:hash equals copy, V:copy> () -> std::map::hashmap<K, V> {
    ret std::map::hashmap({|k| k.hash()}, {|k1,k2| k1.equals(k2)});
}

?
Ah, I had not considered that - and it looks to me like it should work - but it doesn't:

hello.rs:26:31: 26:37 error: the type of this value must be known in this context hello.rs:26 ret std::map::hashmap({|k| k.hash()}, {|k1, k2| k1.equals(k2)});

but this might be a type inference bug, because if it is rewritten with type annotations then it works:

let hashfn:fn@(K)->uint = {|k| k.hash()};
let eqfn:fn@(K, K)->bool = {|a, b| a.equals(b)};
ret std::map::hashmap(hashfn, eqfn);

Considering your answer, and the other answers, I have abandoned this bikeshed.

Gareth
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to