index_from_end/
ops.rs

1
2use std::ops::*;
3use crate::*;
4
5impl Sub<usize> for Len {
6    type Output = FromEnd;
7
8    fn sub(self, rhs: usize) -> Self::Output {
9        FromEnd {dist: rhs}
10    }
11}
12
13impl Mul<usize> for Len {
14    type Output = LenMul;
15    fn mul(self, rhs: usize) -> Self::Output {
16        LenMul {number: rhs}
17    }
18}
19
20impl Div<usize> for LenMul {
21    type Output = LenFrac;
22
23    fn div(self, rhs: usize) -> Self::Output {
24        LenFrac {numer: self.number, denom: rhs}
25    }
26}
27
28impl Div<usize> for Len {
29    type Output = LenFrac;
30    fn div(self, rhs: usize) -> Self::Output {
31        LenFrac {numer: 1, denom: rhs}
32    }
33}
34
35impl Add<isize> for LenFrac {
36    type Output = FromFrac;
37
38    fn add(self, rhs: isize) -> Self::Output {
39        FromFrac {
40            offset: rhs,
41            numer: self.numer,
42            denom: self.denom
43        }
44    }
45}
46
47impl Sub<isize> for LenFrac {
48    type Output = FromFrac;
49
50    fn sub(self, rhs: isize) -> Self::Output {
51        FromFrac {
52            offset: -rhs,
53            numer: self.numer,
54            denom: self.denom
55        }
56    }
57}