Make set_bit inform instead of asserting.

This commit is contained in:
Sean Bowe 2016-09-18 01:47:54 -06:00
parent 3e5b7179c1
commit 3e40981e3f
No known key found for this signature in database
GPG Key ID: 95684257D8F8B031
1 changed files with 15 additions and 11 deletions

View File

@ -88,7 +88,7 @@ impl U256 {
for (i, x) in modulo.bits().enumerate() {
if !x {
res.set_bit(255 - i, false);
assert!(res.set_bit(255 - i, false));
} else {
break;
}
@ -107,17 +107,21 @@ impl U256 {
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);
let part = n / 64;
let bit = n - (64 * part);
if to {
self.0[part] |= 1 << bit;
if n >= 256 {
false
} 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 mut e = U256::zero();
for (i, b) in a.bits().enumerate() {
e.set_bit(255 - i, b);
assert!(e.set_bit(255 - i, b));
}
assert_eq!(a, e);