From: Ian Jackson Date: Wed, 28 Apr 2021 22:43:00 +0000 (+0100) Subject: PosOffTableError: Use error autoconversion X-Git-Tag: otter-0.6.0~505 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=2634f1a440ae39fe15dbdd987090122d7050c96b;p=otter.git PosOffTableError: Use error autoconversion Signed-off-by: Ian Jackson --- 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 {