мне канонично запушить в вектор, а если его нет, то создать, и запушить?
let mut a: Option<Box<Vec<u32>>> = None; let mut b = a.unwrap_or_default(); b.push(10); a = Some(b); +- так, но можно и лучше. // capacity не учитывается. так как я не знаю вашей логики кода. и Box в перемешку с Vec кажись не имеет смысла, так как Vec сам по себе почти боксовый
opt.get_or_insert_with(|| Box::new(Vec::new())).push(x); Но класть вектор в бокс и впрямь смысла мало
Box_new/Vec_new можно просто заменить на Default::default(), а потом упращением убираем Fn.. и по итогу все выйдет в точности как у меня. т.е a.unwrap_or_default().push(10)...
Так это другое, твой вариант забирает владение Option вместо того, чтобы менять in-place
а до opt.get_or_insert_with(Default::default).push(x) можно?
да верно, остается только вариает с Default
Да. Я не помнил, есть ли у Box транзитивный impl Default
или opt.get_or_insert_default().push(x)
это под фичей пока правда
Обсуждают сегодня