【发布时间】:2017-07-12 19:56:33
【问题描述】:
struct RefWrap<'a> {
wrap: &'a mut Option<String>,
}
impl<'a> RefWrap<'a> {
fn unwrap(&mut self) -> &'a mut String {
match *self.wrap {
Some(ref mut s) => s,
None => panic!(),
}
}
}
据我了解,这段代码是正确的(返回的引用确实有生命周期'a。但是Rust会产生以下错误:
error[E0495]: cannot infer an appropriate lifetime for pattern due to conflicting requirements
--> <anon>:8:18
|
8 | Some(ref mut s) => s,
| ^^^^^^^^^
Using immutable references,它可以正常工作。
有one similar question,但我很确定它在这种情况下没有帮助。
【问题讨论】: