Not equal trait bounds?

#1

I was exploring an attempt at making the binary operations (Add, Mul, Div, etc.) work on any two types as long as one can into() the other and can add to itself. The problem comes when I have the two types be the same type and therefore conflicting implementations.
I was wondering if there was a bound (Or will be a bound) that makes two types not equal like:

fn foo<T, U>() 
where T != U {
}

Which would solve the aforementioned problem.

#2

You can use auto traits to do this, but you can’t on stable.