面试题答案
一键面试&self
的生命周期含义:- 在Rust中,
&self
表示对结构体MyStruct
实例的不可变引用。它的生命周期是从该引用创建开始,到包含该引用的作用域结束时结束。在print_data
函数中,&self
的生命周期确保了在函数执行期间,self
所指向的MyStruct
实例不会被释放,从而保证self.data
(即String
类型的数据)也不会被释放,这样函数才能安全地访问和打印self.data
。
- 在Rust中,
- 修改函数签名及相关代码以返回
self.data
的引用:struct MyStruct { data: String } impl MyStruct { fn get_data(&self) -> &str { &self.data } }
- 函数签名从
fn print_data(&self)
修改为fn get_data(&self) -> &str
。这里返回类型为&str
,因为&self.data
是String
的切片,其类型为&str
。 - Rust会自动推断
&self
和返回值&str
的生命周期是一致的,都与调用该方法的MyStruct
实例的生命周期相关联。这样就正确管理了生命周期,确保在返回self.data
的引用时,self.data
所对应的内存不会提前被释放。
- 函数签名从