use crate::{Error, Result};
#[diagnostic::on_unimplemented(
note = "Consider adding an impl of `IntoIterator<Item = usize>` to `{Self}`"
)]
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)
}
}