From: Ian Jackson Date: Thu, 18 Mar 2021 23:51:51 +0000 (+0000) Subject: xdata: provide get_exp X-Git-Tag: otter-0.5.0~694 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=b136206357d2c5096052eda4a84da02a804c4320;p=otter.git xdata: provide get_exp Signed-off-by: Ian Jackson --- diff --git a/src/gamestate.rs b/src/gamestate.rs index cedfe6b4..c20bde3a 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -279,6 +279,11 @@ impl GPiece { self.xdata.get()? } + #[throws(IE)] + pub fn xdata_exp(&self) -> &T { + self.xdata.get_exp()? + } + #[throws(IE)] pub fn xdata_mut< T: PieceXData, @@ -324,6 +329,17 @@ impl PieceXDataState { else { throw!(xdata_unexpected::(xdata)) } } + #[throws(IE)] + fn get_exp(&self) -> &T { + self.get()? + .ok_or_else(|| internal_logic_error(format!( + "\n\ + piece xdata unexpected missing\n\ + expected something like: {:?}\n", + T::dummy(), + )))? + } + fn get_mut< T: PieceXData, D: FnOnce() -> T,