"No se puede inferir una vida útil adecuada para el patrón debido a requisitos contradictorios" en el patrón `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!(),
}
}
}
Según tengo entendido, este código es correcto (la referencia devuelta realmente tiene la duración'a
. Pero Rust produce el siguiente error:
error[E0495]: cannot infer an appropriate lifetime for pattern due to conflicting requirements
--> <anon>:8:18
|
8 | Some(ref mut s) => s,
| ^^^^^^^^^
Usando referencias inmutables, funciona sin errores.
Ha habidouna pregunta similar, pero estoy bastante seguro de que no es útil en este caso.