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,
| ^^^^^^^^^
При использовании неизменяемых ссылок он работает без ошибок.
Был один похожий вопрос, но я почти уверен, что он бесполезно в этом случае.
&'a mut
ссылки - ›Я так не думаю. Например, посмотрите этот код. Я использовалtransmute()
, чтобы метод заработал, но я все еще не могу создать две изменяемые ссылки. Также: я специально хочу, чтобы возвращенная ссылка имела более длительный срок службы, а именно'a
. 22.02.2017