I want to create types, and implementations of std::ops::Add such that:
add(Position, Displacement) -> Position
add(Displacement, Displacement) -> Displacement
The purpose is to make nonsense operations, such as adding two positions, cause compile-time errors.
How can I do this, given that add()'s signature is: fn add(self, other: Self) -> Self::Output?
Add::add()signature. The correct one lets you do what you want.