I have a function f which takes two arguments of the same type, and a function g which takes two arguments of different types, but both types have
A where clause works fine:
fn g(a: T, b: U)
where
T: A,
U: A, // where T::A is equal to B::A
{
f(a.getter(), b.getter())
}