функции нужно пробросить эту же транзакцию в несколько фунrций, можно ли через option.map() как-то провернуть?
if let Some(ref mut t) = transaction { let a = qwe(Some(t))?; let b = asd(Some(t))?; }
но тогда во второй ветви нужно будет, что как-то не красиво
Проблема в том, что реборровинг мутабельной ссылки — это хак компилятора, и работает оно только на &mut T, ни на чём другом оно не работает. В твоей ситуации проще всего ловить &mut Option<Transaction>, чтобы реборровинг нормально работал.
тоесть типы параметров принимающей функции менять?
Либо так, либо делать match и руками реборровить.
Вообще-то можно, но не очень красиво bar1(t.as_mut().map(|r| &mut **r));
Обсуждают сегодня