当我试图为一个有生命周期的引用类型实现一些trait时,我发现下面的code在关联类型R
未注解时无法编译,但在删除它时编译。
trait Foo {
// type R;
fn foo(&mut self);
}
struct B;
impl<'a> Foo for B
where
&'a B: 'a,
{
// type R = &'a u8;
fn foo(&mut self) {
println!("=====");
}
}
fn main() {
let b = &mut B;
b.foo();
}
where
子句的含义是什么?
此外,当我试图取消注解代码,然后编译器抱怨E0207,为什么没有编译器错误的前一段代码?
1条答案
按热度按时间q9yhzks01#
如果没有更多的上下文,代码看起来就像是在试图解决缺少泛型关联类型的问题。由于它们在Rust 1.65中可用,因此您可以删除where子句并向R关联类型添加通用生命周期参数。