chiark / gitweb /
apitest: Introduce and use JsV extension extend
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 May 2022 17:43:45 +0000 (18:43 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 May 2022 17:47:41 +0000 (18:47 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
apitest/apitest.rs
apitest/atmain.rs

index d2a8235892e0620649639514b0847b1720a468ad..9819759fa85a41298cf93990d68c565038504196 100644 (file)
@@ -133,6 +133,15 @@ impl JsV {
   fn set<K: Into<String>>(&mut self, k: K, v: &JsV) {
     self.as_object_mut().unwrap().insert(k.into(), v.clone());
   }
+
+  fn extend<I,K,V>(&mut self, i: I)
+  where I: IntoIterator<Item=(K, V)>,
+        K: Into<String>,
+        V: Borrow<JsV>,
+  {
+    let i = i.into_iter().map(|(k,v)| (k.into(), v.borrow().clone()));
+    self.as_object_mut().unwrap().extend(i);
+  }
 }
 
 // -------------------- Substition --------------------
index f72c4a2a1468e188e6c12e35b4d2e42521524377..557fc5cac09ca3d099ef2ec3543a3bba94be797a 100644 (file)
@@ -441,9 +441,7 @@ pub fn update_update_pieces<PI:Idx>(
       "Modify" | "ModifyQuiet" => {
         let d = d.as_object().unwrap();
         p.pos = coord(&d["pos"]);
-        for (k,v) in d {
-          p.info.set(k, &v);
-        }
+        p.info.extend(d);
       },
       _ => {
         panic!("unknown op {:?} {:?}", &op, &d);