From b136206357d2c5096052eda4a84da02a804c4320 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 18 Mar 2021 23:51:51 +0000 Subject: [PATCH] xdata: provide get_exp Signed-off-by: Ian Jackson --- src/gamestate.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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, -- 2.30.2