如何为包含带生命周期参数的Foo引用的Bar类型声明生命周期参数?
Rust 带生命周期参数的结构体引用定义
你需要这样定义Bar结构体,同时满足你提出的两个要求:
struct Bar<'b, 'a: 'b> { foo: &'b Foo<'a> }
对应要求的解释:
- 引用生命周期与Bar一致:
Bar的生命周期参数'b直接绑定到foo字段的引用生命周期&'b,确保这个引用的存活时长和Bar实例完全一致。 - Foo生命周期只需长于Bar:通过
'a: 'b的生命周期约束,强制Foo的生命周期'a至少不短于Bar的生命周期'b——只要满足这个条件,'a的具体长度不需要额外关心。
如果觉得参数冗余,也可以利用Rust的生命周期推导简化写法,多数场景下这样写也能满足需求:
struct Bar<'a> { foo: &'a Foo<'_> }
这里的'_是匿名生命周期,Rust会自动推导它的长度至少不短于'a,不过显式写出约束的写法更清晰,适合需要明确生命周期关系的场景。
内容的提问来源于stack exchange,提问作者sak
相关产品推荐
相关产品推荐

