From: Ian Jackson Date: Sun, 1 May 2022 17:21:04 +0000 (+0100) Subject: apitest: Break out findp X-Git-Tag: otter-1.1.0~359 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=74b02a31f4537bef9c962f754b556a47bc16a161;p=otter.git apitest: Break out findp Signed-off-by: Ian Jackson --- diff --git a/apitest/atmain.rs b/apitest/atmain.rs index ea5b155d..cdfe06b7 100644 --- a/apitest/atmain.rs +++ b/apitest/atmain.rs @@ -415,12 +415,17 @@ pub fn update_update_pieces( ) } + fn findp<'p, PI:Idx>(pieces: &'p mut Pieces, piece: &'_ str) + -> Option<&'p mut PieceInfo> { + 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" => {