chiark / gitweb /
apitest: Break out findp
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 May 2022 17:21:04 +0000 (18:21 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 May 2022 17:22:36 +0000 (18:22 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
apitest/atmain.rs

index ea5b155d95ff7ce14ace963d76a34133da48770a..cdfe06b7b6c8771f5ec1ec69efee4749923f34cc 100644 (file)
@@ -415,12 +415,17 @@ pub fn update_update_pieces<PI:Idx>(
     )
   }
 
+  fn findp<'p, PI:Idx>(pieces: &'p mut Pieces<PI>, piece: &'_ str)
+               -> Option<&'p mut PieceInfo<JsV>> {
+    pieces.iter_mut().find(|p| p.id == piece)
+  }
+
+  let v = v.as_object().unwrap();
+
   if k == "Piece" {
-    let v = v.as_object().unwrap();
-    let piece = v["piece"].as_str().unwrap();
-    let p = pieces.iter_mut().find(|p| p.id == piece);
-    let (op, d) = v["op"].as_object().unwrap().iter().next().unwrap();
+    let p = findp(pieces, v["piece"].as_str().unwrap());
     if_let!{ Some(p) = p; else return }
+    let (op, d) = v["op"].as_object().unwrap().iter().next().unwrap();
 
     match op.as_str() {
       "Move" => {