无法将特征的关联类型与未出错的泛型参数一起使用



这个例子来自rust的错误索引,我仍然无法理解为什么会出现这种情况

#![allow(unused)]
fn main() {
pub trait Foo<T> {
type A;
fn get(&self, t: T) -> Self::A;
}
fn foo2<I: for<'x> Foo<&'x isize>>(field: I::A) {} // error!
}

Ifoo2()中没有实现Foo一次。它多次实现,在'x的每个生命周期中实现一次。

因此,<I as Foo>::A也没有一个值。有多个实例,每个实例对应一个'x

当您想要指定I::A时,您需要告诉编译器哪个I::A,也就是说,用哪个生存期绑定'x

最新更新