Skip to content

Commit fa3f5d9

Browse files
committed
Use Rc::make_mut as a tidier alternative to Rc::get_mut
1 parent aed5ed3 commit fa3f5d9

1 file changed

Lines changed: 7 additions & 25 deletions

File tree

src/asset.rs

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -282,32 +282,14 @@ impl AssetPool {
282282
I: IntoIterator<Item = Rc<Asset>>,
283283
{
284284
let new_pool = assets.into_iter().map(|mut asset| {
285-
if asset.id.is_some() {
286-
// Already commissioned
287-
asset.into()
288-
} else {
289-
let mut update_id = |asset: &mut Asset| {
290-
// We need to assign an ID
291-
asset.id = Some(AssetID(self.next_id));
292-
self.next_id += 1;
293-
};
294-
295-
// Asset is newly created from process. We use `get_mut` to avoid a clone in the
296-
// (likely) case that there is only one reference to `asset`
297-
let rc_asset = match Rc::get_mut(&mut asset) {
298-
Some(asset_inner) => {
299-
update_id(asset_inner);
300-
asset
301-
}
302-
None => {
303-
let mut asset = asset.as_ref().clone();
304-
update_id(&mut asset);
305-
asset.into()
306-
}
307-
};
308-
309-
rc_asset.into()
285+
if asset.id.is_none() {
286+
// Asset is newly created from process so we need to assign an ID
287+
let asset = Rc::make_mut(&mut asset);
288+
asset.id = Some(AssetID(self.next_id));
289+
self.next_id += 1;
310290
}
291+
292+
asset.into()
311293
});
312294

313295
self.active.clear();

0 commit comments

Comments
 (0)