面试题答案
一键面试struct C;
struct B<'a> {
c: &'a C,
}
struct A<'a> {
b: &'a B<'a>,
}
fn get_c<'a>(a: &'a A<'a>) -> &'a C {
a.b.c
}
'a
:这是一个生命周期参数。在B
结构体定义中,&'a C
表示B
中对C
的引用的生命周期为'a
。在A
结构体定义中,&'a B<'a>
表示A
中对B
的引用的生命周期为'a
,同时B
本身的生命周期参数也为'a
,这确保了A
引用的B
,以及B
引用的C
都具有相同的生命周期'a
。在函数get_c
中,参数a
的生命周期为'a
,返回值&'a C
的生命周期也为'a
,这保证了返回的对C
的引用在a
有效的期间内也是有效的。