From: Ian Jackson Date: Thu, 20 May 2021 10:26:33 +0000 (+0100) Subject: utils: Rename [Index]Vec::get_or_extend_with and soup up X-Git-Tag: otter-0.6.0~122 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=9a3de55a5ef5e5b42d7010c3508340b8abe601cf;p=otter.git utils: Rename [Index]Vec::get_or_extend_with and soup up Signed-off-by: Ian Jackson --- diff --git a/src/bundles.rs b/src/bundles.rs index 7232ac29..0235cfad 100644 --- a/src/bundles.rs +++ b/src/bundles.rs @@ -886,7 +886,7 @@ impl InstanceBundles { }, }; - ib.bundles.ensure_element_with(parsed.index().into(), default); + ib.bundles.get_or_extend_with(parsed.index().into(), default); if_let!{ BundleSavefile::Bundle(id) = parsed; else continue; } diff --git a/src/utils.rs b/src/utils.rs index 335de872..0573f389 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -626,16 +626,19 @@ impl T { #[ext(pub)] impl Vec { - fn ensure_element_with(&mut self, i: usize, f: F) where F: FnMut() -> T { + fn get_or_extend_with(&mut self, i: usize, f: F) -> &mut T + where F: FnMut() -> T { if self.get(i).is_none() { self.resize_with(i+1, f); } + &mut self[i] } } #[ext(pub)] impl IndexVec where I: index_vec::Idx { - fn ensure_element_with(&mut self, i: I, f: F) where F: FnMut() -> T { - self.raw.ensure_element_with(i.index(), f) + fn get_or_extend_with(&mut self, i: I, f: F) -> &mut T + where F: FnMut() -> T { + self.raw.get_or_extend_with(i.index(), f) } }