ret @{storage: storage, nbits: nbits};
}
-fn process(op: block(uint, uint) -> uint, v0: t, v1: t) -> bool {
+fn process(v0: t, v1: t, op: block(uint, uint) -> uint) -> bool {
let len = vec::len(v1.storage);
assert (vec::len(v0.storage) == len);
assert (v0.nbits == v1.nbits);
fn lor(w0: uint, w1: uint) -> uint { ret w0 | w1; }
-fn union(v0: t, v1: t) -> bool { let sub = lor; ret process(sub, v0, v1); }
+fn union(v0: t, v1: t) -> bool { let sub = lor; ret process(v0, v1, sub); }
fn land(w0: uint, w1: uint) -> uint { ret w0 & w1; }
*/
fn intersect(v0: t, v1: t) -> bool {
let sub = land;
- ret process(sub, v0, v1);
+ ret process(v0, v1, sub);
}
fn right(_w0: uint, w1: uint) -> uint { ret w1; }
True if `v0` was changed
*/
-fn assign(v0: t, v1: t) -> bool { let sub = right; ret process(sub, v0, v1); }
+fn assign(v0: t, v1: t) -> bool { let sub = right; ret process(v0, v1, sub); }
/*
Function: clone