From 7d8c05a354a95f36645dde9b03cfe62fcffe93ba Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 25 Mar 2021 14:57:13 +0000 Subject: [PATCH] wasm: RegionList: Have methods return a `changed` bool Signed-off-by: Ian Jackson --- wasm/wasm.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/wasm/wasm.rs b/wasm/wasm.rs index 00f9c379..e7279207 100644 --- a/wasm/wasm.rs +++ b/wasm/wasm.rs @@ -153,22 +153,26 @@ pub fn empty_region_list() -> RegionList { RegionList(default()) } #[wasm_bindgen] impl RegionList { pub fn insert(&mut self, piece: JsValue, region: JsValue) - -> Result<(), JsValue> + -> Result { let piece = piece .as_string().ok_or(BadRegionArguments).e()?; let region = region.as_string().ok_or(BadRegionArguments).e()?; let region: RegionC = serde_json::from_str(®ion) .map_err(|_| BadRegionArguments).e()?; - self.0.insert(piece, region); - Ok(()) + let changed = match self.0.insert(piece, region.clone()) { + Some(old_region) => old_region != region, + None => true, + }; + Ok(changed) } pub fn remove(&mut self, piece: JsValue) - -> Result<(), JsValue> + -> Result { let piece = piece .as_string().ok_or(BadRegionArguments).e()?; - self.0.remove(&piece); - Ok(()) + let was = self.0.remove(&piece); + let changed = was.is_some(); + Ok(changed) } pub fn contains_pos(&mut self, x: Number, y: Number) -> bool { -- 2.30.2