From 2634f1a440ae39fe15dbdd987090122d7050c96b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 28 Apr 2021 23:43:00 +0100 Subject: [PATCH] PosOffTableError: Use error autoconversion Signed-off-by: Ian Jackson --- daemon/cmdlistener.rs | 4 ++-- src/gamestate.rs | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index 55d128fe..6c68e5d3 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -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); diff --git a/src/gamestate.rs b/src/gamestate.rs index 31931b0a..f05a7e7c 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -347,6 +347,13 @@ impl ClampTable for Pos { } } +impl From> for SpecError { + fn from(_: PosOffTableError) -> SpecError { SpecError::PosOffTable } +} +impl From> for MgmtError { + fn from(pote: PosOffTableError) -> MgmtError { ME::BadSpec(pote.into()) } +} + // ---------- game state - rendering etc. ---------- impl GPiece { -- 2.30.2