"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!(),
        }
    }
}

(Patio de recreo)

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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta