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

(Parque infantil)

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.

questionAnswers(1)

yourAnswerToTheQuestion