use std::ops::{Add, Sub};
pub trait CumSum<T> {
fn cumsum(&self) -> Vec<T>;
}
impl<T> CumSum<T> for [T]
where
T: PartialOrd + Copy + Default + Add<Output = T> + Sub<Output = T>,
{
fn cumsum(&self) -> Vec<T> {
let mut sec: Vec<T> = vec![T::default(); self.len() + 1];
for i in 0..self.len() {
sec[i + 1] = sec[i] + self[i];
}
sec
}
}