chiark / gitweb /
PosOffTableError: Use error autoconversion
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Apr 2021 22:43:00 +0000 (23:43 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Apr 2021 22:43:00 +0000 (23:43 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs
src/gamestate.rs

index 55d128fe0ef88c60d4c7b2534331b19cba9ee171..6c68e5d37c91f19d0e0f4f99b553932ea132693b 100644 (file)
@@ -378,7 +378,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
     MGI::SetTableSize(size) => {
       let ig = cs.check_acl(ag, ig, PCH::Instance, &[TP::ChangePieces])?.0;
       for p in ig.gs.pieces.values() {
-        p.pos.clamped(size).map_err(|_| SpecError::PosOffTable)?;
+        p.pos.clamped(size)?;
       }
       ig.gs.table_size = size;
       (U{ pcs: vec![],
@@ -775,7 +775,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
         let occilk = occultable.map(|(ilkname, p_occ)| {
           ilks.insert(ilkname, OccultIlkData { p_occ })
         });
-        gpc.pos.clamped(gs.table_size).map_err(|_| SpecError::PosOffTable)?;
+        gpc.pos.clamped(gs.table_size)?;
         if gpc.zlevel > gs.max_z { gs.max_z = gpc.zlevel.clone() }
         let piece = gs.pieces.as_mut(modperm).insert(gpc);
         let p = IPieceTraitObj::new(p);
index 31931b0a5d478c5eecd8356d84554b97e77efb1f..f05a7e7c6294cc4fa249871befdb1dfbbc149554 100644 (file)
@@ -347,6 +347,13 @@ impl ClampTable for Pos {
   }
 }
 
+impl<T:Debug> From<PosOffTableError<T>> for SpecError {
+  fn from(_: PosOffTableError<T>) -> SpecError { SpecError::PosOffTable }
+}
+impl<T:Debug> From<PosOffTableError<T>> for MgmtError {
+  fn from(pote: PosOffTableError<T>) -> MgmtError { ME::BadSpec(pote.into()) }
+}
+
 // ---------- game state - rendering etc. ----------
 
 impl GPiece {