面试题答案
一键面试struct MyString {
inner: String,
}
impl MyString {
fn as_str(&self) -> &str {
// Deref强制转换,因为String实现了Deref<Target = str>
// 这里MyString内部的String成员变量在需要&str的地方会自动通过Deref转换
&self.inner
}
}
解释:
- 首先定义了结构体
MyString
,它包含一个String
类型的成员变量inner
。 - 然后在
MyString
的实现块中定义了as_str
方法,这个方法接收&MyString
类型的self
。 - 在方法内部,直接返回
&self.inner
。因为String
类型实现了Deref<Target = str>
,所以在需要&str
类型的地方,&String
类型的值会自动通过Deref
强制转换为&str
类型,从而满足题目要求将&MyString
当作&str
来使用。