How can I enforce equality of two associated type parameters of traits?

前端 未结 2 1723
猫巷女王i
猫巷女王i 2020-12-21 04:14

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

相关标签:
2条回答
  • 2020-12-21 04:39

    A where clause works fine:

    fn g<T, U>(a: T, b: U)
    where
        T: A,
        U: A<A = T::A>, // where T::A is equal to B::A
    {
        f(a.getter(), b.getter())
    }
    
    0 讨论(0)
  • 2020-12-21 04:39

    I found a solution. It's not done by a where clause, but this way:

    fn g<T: A, U: A<A = T::A>>(a: T, b: U) { // where T::A is equal to B::A
        f(a.getter(), b.getter())
    }
    
    0 讨论(0)
提交回复
热议问题