"Não é possível inferir uma vida útil apropriada para o padrão devido a requisitos conflitantes" no padrão `ref mut`
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!(),
}
}
}
Pelo que entendi, esse código está correto (a referência retornada realmente tem a vida útil'a
. Mas Rust produz o seguinte erro:
error[E0495]: cannot infer an appropriate lifetime for pattern due to conflicting requirements
--> <anon>:8:18
|
8 | Some(ref mut s) => s,
| ^^^^^^^^^
Usando referências imutáveis, funciona sem erro.
Houveuma pergunta semelhante, mas tenho certeza de que não é útil nesse caso.