chiark / gitweb /
utils: Rename [Index]Vec::get_or_extend_with and soup up
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 20 May 2021 10:26:33 +0000 (11:26 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 20 May 2021 10:26:33 +0000 (11:26 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bundles.rs
src/utils.rs

index 7232ac29b33e204a19dfa848156f74fe56f34e05..0235cfadf776b2676d90d6b5782691449b15971f 100644 (file)
@@ -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; }
index 335de872d18e7d733ab3fb458245f16fea6e9bd0..0573f389a6a90ee36d240b014e1f178ac389b675 100644 (file)
@@ -626,16 +626,19 @@ impl<T: io::Seek> T {
 
 #[ext(pub)]
 impl<T> Vec<T> {
-  fn ensure_element_with<F>(&mut self, i: usize, f: F) where F: FnMut() -> T {
+  fn get_or_extend_with<F>(&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<I,T> IndexVec<I,T> where I: index_vec::Idx {
-  fn ensure_element_with<F>(&mut self, i: I, f: F) where F: FnMut() -> T {
-    self.raw.ensure_element_with(i.index(), f)
+  fn get_or_extend_with<F>(&mut self, i: I, f: F) -> &mut T
+  where F: FnMut() -> T {
+    self.raw.get_or_extend_with(i.index(), f)
   }
 }