Generics 为什么泛型类型的推理不是;及物的;?

Generics 为什么泛型类型的推理不是;及物的;?,generics,rust,type-inference,Generics,Rust,Type Inference,当我尝试编译此代码时: use std::borrow::Borrow; fn test_eq<T, U, B>(t: T, u: U) -> bool where T: Borrow<B>, U: Borrow<B>, B: PartialEq<B> + ?Sized, { t.borrow() == u.borrow() } fn main() { let my_vec = vec![1, 2,

当我尝试编译此代码时:

use std::borrow::Borrow;

fn test_eq<T, U, B>(t: T, u: U) -> bool
where
    T: Borrow<B>,
    U: Borrow<B>,
    B: PartialEq<B> + ?Sized,
{
    t.borrow() == u.borrow()
}

fn main() {
    let my_vec = vec![1, 2, 3];

    assert!(test_eq(my_vec, [1, 2, 3]));
}
为什么此代码无法编译?

E0283

当编译器没有足够的信息来明确选择实现时,就会发生此错误

在本例中,编译器无法推断
B
是切片类型
[T]
,您至少必须使用注释
[\u]
指定该信息:

assert!(test_eq::<_, _, [_]>(my_vec, [1, 2, 3] ));
assert!(测试等式::(我的向量[1,2,3]);
assert!(test_eq::<_, _, [_]>(my_vec, [1, 2, 3] ));