首页 > 解决方案 > 引用到通用特征的生命周期

问题描述

我试图要求一个泛型类型可以通过 const ref 索引到另一个泛型:

struct A<T, I> where T: Index<&I> {
    t: T,
    some_more_uses_of_I...
}

它不编译要求我为 &I 提供一生。当我将其更改为&'_ I编译器时,会抱怨“'_不能在此处使用”并且“'_是保留的生命周期名称”。我怎样才能让它工作?据我了解,生命周期没有真正的需要,引用必须仅在执行期间才有效,[]并且我相信我不应该将其绑定到任何其他对象。

标签: genericsrustreferencelifetime

解决方案


在不确切知道您如何使用此结构的情况下,很难说。但听起来你可以使用更高级别的特征绑定,这样约束在整个生命周期中都是通用的:

struct A<T, I> 
where 
    T: for<'a> Index<&'a I>
{
    t: T,
    some_more_uses_of_I...
}

推荐阅读