我有一个函数 f
接受两个相同类型的参数,还有一个函数 g
接受两个不同类型的参数,但是这两种类型都必须存储相同的值,因此 g
可以使用 f
的参数中包含的值调用 f
。我目前实现了这样的东西:
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())
}
我必须在 g
的定义中添加什么才能使其工作?
最佳答案
where
子句工作正常:
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())
}
关于generics - 如何强制特征的两个关联类型参数相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42378514/