use std::ops::AddAssign;
use num_traits::One;
pub trait Fill {
fn fill(&mut self);
}
impl<T: One + AddAssign> Fill for T {
#[inline]
fn fill(&mut self) {
*self += Self::one();
}
}
pub trait FillWith<D> {
fn fill_with(&mut self, value: D);
}
impl<D> FillWith<&D> for D
where
for<'a> Self: AddAssign<&'a D>,
{
#[inline]
fn fill_with(&mut self, data: &D) {
*self += data;
}
}
impl<D> FillWith<D> for D
where
for<'a> Self: AddAssign<D>,
{
#[inline]
fn fill_with(&mut self, data: D) {
*self += data;
}
}
pub trait FillWithWeighted<D, W> {
fn fill_with_weighted(&mut self, data: D, weight: W);
}