From b1f4d48e956c6b6599b666248e5aa157b9660dca Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Tue, 18 Oct 2022 07:56:16 +0200 Subject: First draft of (untested) iterative conversion. --- src/passwordmaker/base_conversion/remainders.rs | 37 ++----------------------- 1 file changed, 3 insertions(+), 34 deletions(-) (limited to 'src/passwordmaker/base_conversion/remainders.rs') diff --git a/src/passwordmaker/base_conversion/remainders.rs b/src/passwordmaker/base_conversion/remainders.rs index 93570a1..344fab2 100644 --- a/src/passwordmaker/base_conversion/remainders.rs +++ b/src/passwordmaker/base_conversion/remainders.rs @@ -1,22 +1,10 @@ -/// Adds `calc_remainders(divisor)` method to types that have some implementation of the Division trait. +use super::division::{Division, DivisionResult}; + +/// Trait used for the old base conversion. pub(super) trait CalcRemainders{ fn calc_remainders(self, divisor : D) -> Remainders; } -/// Implement `Division` to enable the `calc_remainders()` method for your type. -pub(super) trait Division where Self:Sized { - /// does in-place arbitrary-length division. Returns remainder. - fn divide(self, divisor : &D) -> DivisionResult; - fn is_zero(&self) -> bool; -} - -/// Or mark your type as `UseGenericDivision` to just use `/` and `%` operators for types. Makes only sense for integers. -pub(super) trait UseGenericDivision : Clone - + for <'a> std::ops::Div<&'a Self, Output = Self> - + for <'a> std::ops::Rem<&'a Self, Output = Self> - + Default - + Eq {} - impl CalcRemainders for T where T:Division { @@ -52,23 +40,4 @@ impl> Iterator for Remainders{ None } } -} - -pub(super) struct DivisionResult, U> { - pub result : T, - pub remainder : U, -} - -impl Division for U - where U: UseGenericDivision -{ - fn divide(self, divisor : &Self) -> DivisionResult { - DivisionResult { - result: self.clone().div(divisor), - remainder: self.rem(divisor) - } - } - fn is_zero(&self) -> bool { - *self == Self::default() - } } \ No newline at end of file -- cgit v1.2.3