1use std::ops::Add;
8
9pub struct MilliMeter(pub u32);
10struct Meter(u32);
11
12impl Add<Meter> for MilliMeter {
13 type Output = MilliMeter;
14 fn add(self, rhs: Meter) -> Self::Output {
15 MilliMeter(self.0 + rhs.0 * 1000)
16 }
17}
18
19impl Add for MilliMeter {
32 type Output = MilliMeter;
33 fn add(self, rhs: Self) -> Self::Output {
34 MilliMeter(self.0 + rhs.0)
35 }
36}
37
38#[cfg(test)]
39mod test {
40 use super::*;
41
42 #[test]
43 fn add() {
44 let milli1 = MilliMeter(1);
45 let milli2 = MilliMeter(2);
46 let meter = Meter(1);
47 assert_eq!((milli1 + milli2).0, 3);
48 assert_eq!((MilliMeter(1) + meter).0, 1001);
49 }
50}