From bbfa0a7396a17d3f138df8196268390a22f4deed Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 19 Mar 2021 00:38:24 +0000 Subject: [PATCH] xdata: Provide get_mut_exp Signed-off-by: Ian Jackson --- src/gamestate.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/gamestate.rs b/src/gamestate.rs index 70e896f5..e17d5376 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -305,6 +305,13 @@ impl GPiece { self.xdata.get_mut(def)? } + #[throws(IE)] + pub fn xdata_mut_exp< + T: PieceXData, + >(&mut self) -> &mut T { + self.xdata.get_mut_exp()? + } + pub fn dummy() -> Self { let gen_dummy = Generation(1); GPiece { @@ -362,6 +369,13 @@ impl PieceXDataState { let xdata = self.get_or_insert_with(|| Box::new(def())); xdata_get_mut_inner(xdata) } + + fn get_mut_exp< + T: PieceXData, + >(&mut self) -> Result<&mut T, IE> { + let xdata = self.as_mut().ok_or_else(|| xdata_missing::())?; + xdata_get_mut_inner(xdata) + } } fn xdata_get_mut_inner< -- 2.30.2