diff --git a/src/curves/bls381/mod.rs b/src/curves/bls381/mod.rs index 1266eb9..2a56151 100644 --- a/src/curves/bls381/mod.rs +++ b/src/curves/bls381/mod.rs @@ -3,6 +3,7 @@ use std::fmt; use std::cmp::Ordering; use std::borrow::Borrow; +use ::BitIterator; use super::{ Engine, Group, @@ -14,7 +15,6 @@ use super::{ Field, SnarkField, SqrtField, - BitIterator, Convert, Cow, multiexp, diff --git a/src/curves/mod.rs b/src/curves/mod.rs index 549b780..c730eee 100644 --- a/src/curves/mod.rs +++ b/src/curves/mod.rs @@ -3,6 +3,7 @@ use std::fmt; use std::borrow::Borrow; use serde::{Serialize, Deserialize}; +use super::BitIterator; use super::{Cow, Convert}; @@ -247,38 +248,6 @@ pub trait SnarkField: PrimeField + Group fn root_of_unity(&E) -> Self; } -pub struct BitIterator { - t: T, - n: usize -} - -impl> BitIterator { - fn new(t: T) -> Self { - let bits = 64 * t.as_ref().len(); - - BitIterator { - t: t, - n: bits - } - } -} - -impl> Iterator for BitIterator { - type Item = bool; - - fn next(&mut self) -> Option { - if self.n == 0 { - None - } else { - self.n -= 1; - let part = self.n / 64; - let bit = self.n - (64 * part); - - Some(self.t.as_ref()[part] & (1 << bit) > 0) - } - } -} - #[cfg(test)] mod tests; diff --git a/src/lib.rs b/src/lib.rs index 489c98f..52ccb71 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -181,3 +181,35 @@ impl Convert for T { Cow::Borrowed(self) } } + +pub struct BitIterator { + t: T, + n: usize +} + +impl> BitIterator { + fn new(t: T) -> Self { + let bits = 64 * t.as_ref().len(); + + BitIterator { + t: t, + n: bits + } + } +} + +impl> Iterator for BitIterator { + type Item = bool; + + fn next(&mut self) -> Option { + if self.n == 0 { + None + } else { + self.n -= 1; + let part = self.n / 64; + let bit = self.n - (64 * part); + + Some(self.t.as_ref()[part] & (1 << bit) > 0) + } + } +}