面试题答案
一键面试struct A {
s: String,
}
struct B<'a> {
ref_s: &'a String,
}
fn create_instances() -> B<'static> {
let a = A {
s: String::from("example"),
};
B {
ref_s: &a.s,
}
}
解释:
A
结构体简单地包含一个String
类型的成员s
。B
结构体包含一个指向String
的引用ref_s
,由于引用需要指定生命周期,这里使用泛型生命周期参数'a
标注。- 在
create_instances
函数中,创建A
的实例a
,并将a.s
的引用传递给B
的构造函数,返回B
的实例。这里由于a
是在函数内部创建的,为了让返回的B
实例中的引用有效,我们假设这个String
会一直存在,所以返回的B
实例标注为B<'static>
。实际应用中如果a
的生命周期更复杂,需要根据具体情况调整。