use crate::{Error, Result};
pub trait CheckedSum<A>: Sized {
fn checked_sum(self) -> Result<A>;
}
impl<T> CheckedSum<usize> for T
where
T: IntoIterator<Item = usize>,
{
fn checked_sum(self) -> Result<usize> {
self.into_iter()
.try_fold(0, usize::checked_add)
.ok_or(Error::Length)
}
}