parent
569a3bd2ae
commit
d6725a3eec
@ -0,0 +1,75 @@
|
|||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]
|
||||||
|
pub struct Diffs([usize; 3]);
|
||||||
|
|
||||||
|
impl ops::Add for Diffs
|
||||||
|
{
|
||||||
|
type Output = Self;
|
||||||
|
fn add(self, other: Self) -> Self::Output{
|
||||||
|
Self([
|
||||||
|
self.0[0] + other.0[0],
|
||||||
|
self.0[1] + other.0[1],
|
||||||
|
self.0[2] + other.0[2],
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Sum for Diffs
|
||||||
|
{
|
||||||
|
fn sum<I>(iter: I) -> Self
|
||||||
|
where I: Iterator<Item=Self>
|
||||||
|
{
|
||||||
|
iter.fold(Default::default(), |x, y| x + y)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ops::AddAssign for Diffs
|
||||||
|
{
|
||||||
|
fn add_assign(&mut self, rhs: Self) {
|
||||||
|
self.0[0] += rhs.0[0];
|
||||||
|
self.0[1] += rhs.0[1];
|
||||||
|
self.0[2] += rhs.0[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Diffs
|
||||||
|
{
|
||||||
|
#[inline] pub fn jd1(&self) -> usize
|
||||||
|
{
|
||||||
|
self.0[0]
|
||||||
|
}
|
||||||
|
#[inline] pub fn jd2(&self) -> usize
|
||||||
|
{
|
||||||
|
self.0[1]
|
||||||
|
}
|
||||||
|
#[inline] pub fn jd3(&self) -> usize
|
||||||
|
{
|
||||||
|
self.0[2]
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline] pub fn at(&self, idx: usize) -> &usize
|
||||||
|
{
|
||||||
|
&self.0[idx]
|
||||||
|
}
|
||||||
|
#[inline] pub fn at_mut(&mut self, idx: usize) -> &mut usize
|
||||||
|
{
|
||||||
|
&mut self.0[idx]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<(usize,usize,usize)> for Diffs
|
||||||
|
{
|
||||||
|
fn from((f0,f1,f2): (usize,usize,usize)) -> Self
|
||||||
|
{
|
||||||
|
Self([f0,f1,f2])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl From<Diffs> for (usize,usize,usize)
|
||||||
|
{
|
||||||
|
fn from(from: Diffs) -> Self
|
||||||
|
{
|
||||||
|
(from.jd1(), from.jd2(), from.jd3())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in new issue