我有一个这样的结构体-
pub struct A {
pub f: &str,
}
当我稍后尝试使用以下语句将&str值赋给该结构体时-
fn use(&self, t: &str){
let a = A {
f: self.t,
};
}
我收到一个错误消息-
pub f: &str,
| ^ expected named lifetime parameter
然后,我将结构更改为使用命名的生存期参数-
pub struct A<'i> {
pub f: &'i str,
}
但现在它给出了错误-
implicit elided lifetime not allowed here
note: assuming a `'static` lifetime...
help: indicate the anonymous lifetime
有人能解释一下第二个错误吗?我该如何修复它?
2条答案
按热度按时间frebpwbc1#
使用
String
而不是&str
s3fp2yjn2#
在没有看到代码更完整的图片之前,很难说出到底是哪里出了问题,但你可能在
impl
上缺少了一个生存期说明符。例如,下面的代码将编译:您需要为泛型生存期
'a
实现A,否则编译器将隐含与您的结构定义冲突的'static
生存期。然而,这在大多数情况下并不实用,您 * 可能 * 希望您的结构体使用String类型来保存字符串,而String类型对字符串拥有所有权,而不是引用。