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}