面试题答案
一键面试// 定义泛型结构体
struct GenericRef<'a, T> {
ref_value: &'a T,
}
// 实现泛型结构体的方法
impl<'a, T> GenericRef<'a, T> {
fn get_ref(&self) -> &'a T {
self.ref_value
}
}
生命周期设计保证内存安全的原因
- 结构体定义:
GenericRef<'a, T>
中的'a
生命周期参数表示结构体中ref_value
引用的生命周期。这意味着结构体实例的生命周期不能超过ref_value
所引用对象的生命周期。 - 方法实现:
get_ref
方法返回的&'a T
引用与结构体中的ref_value
引用具有相同的'a
生命周期。这样,调用者获取到的引用在结构体存在期间始终是有效的。因为 Rust 的借用检查器会确保在同一时间内,对同一内存区域的引用遵循特定规则,即不会出现悬空引用(dangling reference)。如果结构体的生命周期超过了ref_value
引用对象的生命周期,借用检查器会报错,从而保证了内存安全。