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 to store the same value, so that g can call f with the values contained in the arguments to f. I currently implemented something like this:
fn f<T>(a: T, b: T) {} trait A { type A; fn getter(&self) -> Self::A; } fn g<T: A, U: A>(a: T, b: U) { f(a.getter(), b.getter()) } What do I have to add to the definition of g to make it work?