Seal `CheckedSum`

This commit is contained in:
Sebastian Geisler 2021-06-23 14:18:42 +02:00
parent 6f7da5f2ef
commit 4dae56908b
1 changed files with 11 additions and 1 deletions

View File

@ -864,7 +864,7 @@ impl ::std::iter::Sum for SignedAmount {
}
/// Calculate the sum over the iterator using checked arithmetic.
pub trait CheckedSum<R> {
pub trait CheckedSum<R>: private::SumSeal<R> {
/// Calculate the sum over the iterator using checked arithmetic. If an over or underflow would
/// happen it returns `None`.
fn checked_sum(self) -> Option<R>;
@ -892,6 +892,16 @@ impl<T> CheckedSum<SignedAmount> for T where T: Iterator<Item = SignedAmount> {
}
}
mod private {
use ::{Amount, SignedAmount};
/// Used to seal the `CheckedSum` trait
pub trait SumSeal<A> {}
impl<T> SumSeal<Amount> for T where T: Iterator<Item = Amount> {}
impl<T> SumSeal<SignedAmount> for T where T: Iterator<Item = SignedAmount> {}
}
#[cfg(feature = "serde")]
pub mod serde {
// methods are implementation of a standardized serde-specific signature