From: Ian Jackson Date: Sun, 1 May 2022 17:32:24 +0000 (+0100) Subject: apitest: updates: Refactor findp again X-Git-Tag: otter-1.1.0~355 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=b973949ff05fd295ffcd3fd0d71724155ac99f3c;p=otter.git apitest: updates: Refactor findp again I keep shilly-shallying. I think I want this to be called all the time. Signed-off-by: Ian Jackson --- diff --git a/apitest/atmain.rs b/apitest/atmain.rs index 9c1205a4..4da00999 100644 --- a/apitest/atmain.rs +++ b/apitest/atmain.rs @@ -415,20 +415,22 @@ pub fn update_update_pieces( ) } - fn findp<'p, PI:Idx>(pieces: &'p mut Pieces, piece: &'_ str) - -> &'p mut PieceInfo { - pieces.iter_mut().find(|p| p.id == piece).unwrap() + fn findp<'p, PI:Idx>(pieces: &'p mut Pieces, + v: &'_ serde_json::Map) + -> Option<&'p mut PieceInfo> { + let piece = v.get("piece")?.as_str()?; + pieces.iter_mut().find(|p| p.id == piece) } let v = v.as_object().unwrap(); if k == "Recorded" { - let p = findp(pieces, v["piece"].as_str().unwrap()); + let p = findp(pieces, v).unwrap(); for k in ["zg", "svg"] { p.info.set(k, &v[k]); } } else if k == "Piece" { - let p = findp(pieces, v["piece"].as_str().unwrap()); + let p = findp(pieces, v).unwrap(); let (op, d) = v["op"].as_object().unwrap().iter().next().unwrap(); match op.as_str() {