chiark / gitweb /
xdata: provide get_exp
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 18 Mar 2021 23:51:51 +0000 (23:51 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 19 Mar 2021 20:03:57 +0000 (20:03 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/gamestate.rs

index cedfe6b4c9d31508dc8278390239448994ca9074..c20bde3aa7c3ebea58388a6ace3c07958b2724f7 100644 (file)
@@ -279,6 +279,11 @@ impl GPiece {
     self.xdata.get()?
   }
 
+  #[throws(IE)]
+  pub fn xdata_exp<T:PieceXData>(&self) -> &T {
+    self.xdata.get_exp()?
+  }
+
   #[throws(IE)]
   pub fn xdata_mut<
       T: PieceXData,
@@ -324,6 +329,17 @@ impl PieceXDataState {
     else { throw!(xdata_unexpected::<T>(xdata)) }
   }
 
+  #[throws(IE)]
+  fn get_exp<T:PieceXData>(&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,