diff options
author | Andreas Grois <andi@grois.info> | 2022-10-18 21:18:23 +0200 |
---|---|---|
committer | Andreas Grois <andi@grois.info> | 2022-10-18 21:34:49 +0200 |
commit | 86851fe70c0ff7ff1da98a82edabeef9c2ad989e (patch) | |
tree | dd496ef19bb6575fe85e3a64ba6542fb6db01561 /src/passwordmaker/base_conversion/remainders.rs | |
parent | b1f4d48e956c6b6599b666248e5aa157b9660dca (diff) |
Draft of iterative_conversion.
Diffstat (limited to 'src/passwordmaker/base_conversion/remainders.rs')
-rw-r--r-- | src/passwordmaker/base_conversion/remainders.rs | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/src/passwordmaker/base_conversion/remainders.rs b/src/passwordmaker/base_conversion/remainders.rs deleted file mode 100644 index 344fab2..0000000 --- a/src/passwordmaker/base_conversion/remainders.rs +++ /dev/null @@ -1,43 +0,0 @@ -use super::division::{Division, DivisionResult}; - -/// Trait used for the old base conversion. -pub(super) trait CalcRemainders<T, D>{ - fn calc_remainders(self, divisor : D) -> Remainders<T,D>; -} - -impl<T, D> CalcRemainders<T, D> for T - where T:Division<D> -{ - fn calc_remainders(self, divisor : D) -> Remainders<T, D> { - Remainders::new(self,divisor) - } -} - -pub(super) struct Remainders<T, U>{ - value : Option<T>, - divisor : U, -} - -impl<U, T:Division<U>> Remainders<T, U> { - fn new(value : T, divisor : U) -> Self { - let value = if value.is_zero() { None } else { Some(value) }; - Remainders { - value, - divisor, - } - } -} - -impl<U, T:Division<U>> Iterator for Remainders<T,U>{ - type Item=U; - - fn next(&mut self) -> Option<Self::Item> { - if let Some(v) = self.value.take() { - let DivisionResult{result, remainder} = v.divide(&self.divisor); - self.value = if result.is_zero() { None } else { Some(result) }; - Some(remainder) - } else { - None - } - } -}
\ No newline at end of file |