Make set_bit inform instead of asserting.
This commit is contained in:
parent
3e5b7179c1
commit
3e40981e3f
26
src/arith.rs
26
src/arith.rs
|
@ -88,7 +88,7 @@ impl U256 {
|
||||||
|
|
||||||
for (i, x) in modulo.bits().enumerate() {
|
for (i, x) in modulo.bits().enumerate() {
|
||||||
if !x {
|
if !x {
|
||||||
res.set_bit(255 - i, false);
|
assert!(res.set_bit(255 - i, false));
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -107,17 +107,21 @@ impl U256 {
|
||||||
self.0[3] == 0
|
self.0[3] == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_bit(&mut self, n: usize, to: bool)
|
pub fn set_bit(&mut self, n: usize, to: bool) -> bool
|
||||||
{
|
{
|
||||||
assert!(n < 256);
|
if n >= 256 {
|
||||||
|
false
|
||||||
let part = n / 64;
|
|
||||||
let bit = n - (64 * part);
|
|
||||||
|
|
||||||
if to {
|
|
||||||
self.0[part] |= 1 << bit;
|
|
||||||
} else {
|
} else {
|
||||||
self.0[part] &= !(1 << bit);
|
let part = n / 64;
|
||||||
|
let bit = n - (64 * part);
|
||||||
|
|
||||||
|
if to {
|
||||||
|
self.0[part] |= 1 << bit;
|
||||||
|
} else {
|
||||||
|
self.0[part] &= !(1 << bit);
|
||||||
|
}
|
||||||
|
|
||||||
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,7 +401,7 @@ fn setting_bits() {
|
||||||
let a = U256::random(rng, &modulo);
|
let a = U256::random(rng, &modulo);
|
||||||
let mut e = U256::zero();
|
let mut e = U256::zero();
|
||||||
for (i, b) in a.bits().enumerate() {
|
for (i, b) in a.bits().enumerate() {
|
||||||
e.set_bit(255 - i, b);
|
assert!(e.set_bit(255 - i, b));
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_eq!(a, e);
|
assert_eq!(a, e);
|
||||||
|
|
Loading…
Reference in New Issue