首页 > 解决方案 > 生命周期子类型和泛型:“生命周期参数不允许”错误

问题描述

我试图遵循书中描述的策略(和编译器),但我遇到了以下错误:

lifetime parameters are not allowed on this type: lifetime parameter not allowed

这是代码片段:

struct FooRef<'a, F: 'a>(&'a F);

struct Bar<'a, 'f: 'a, F: Foo<'f>> {
    filter: &'a FooRef<'f, F<'f>>,
}

标签: genericsrustlifetime

解决方案


F是类型变量,而不是类型,因此不能有自己的类型或生命周期参数。如果您需要将类型变量约束为仅保存受生命周期限制的引用,则可以使用生命周期作为边界:

struct Bar<'a, 'f: 'a, F: Foo<'f> + 'f> {
    filter: &'a FooRef<'f, F>,
}

推荐阅读