From 1f4e518a02d9ddcd18e49108904940afdeeceb39 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 27 Jun 2020 13:18:19 +0100 Subject: [PATCH] wip keydata reorg --- src/gamestate.rs | 9 ++------- src/keydata.rs | 11 +++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/gamestate.rs b/src/gamestate.rs index d8e4d26e..f79bceee 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -27,13 +27,8 @@ display_consequential_impls!{VisiblePieceId} impl TryFrom<&str> for VisiblePieceId { type Error = AE; - fn try_from(s : &str) -> Result { - let e = || anyhow!("could not deserialise visibile piece id"); - let mut i = s.splitn(2,'.').map(|s| s.parse().map_err(|_| e())); - let h : u32 = i.next().ok_or_else(e)??; - let l : u32 = i.next().ok_or_else(e)??; - Ok(VisiblePieceId(((h as u64) << 32) | (l as u64))) - } + #[throws(AE)] + fn try_from(s : &str) -> VisiblePieceId { VisiblePieceId(slotkey_parse(s)?) } } impl PieceRenderInstructions { diff --git a/src/keydata.rs b/src/keydata.rs index 9352892d..452816b4 100644 --- a/src/keydata.rs +++ b/src/keydata.rs @@ -1,4 +1,6 @@ +use crate::imports::*; + #[macro_export] macro_rules! display_consequential_impls { ( $x:path ) => { @@ -14,3 +16,12 @@ macro_rules! display_consequential_impls { } pub use crate::display_consequential_impls; // this is madness! + +#[throws(AE)] +pub fn slotkey_parse(s : &str) -> u64 { + let e = || anyhow!("could not deserialise visibile piece id"); + let mut i = s.splitn(2,'.').map(|s| s.parse().map_err(|_| e())); + let h : u32 = i.next().ok_or_else(e)??; + let l : u32 = i.next().ok_or_else(e)??; + ((h as u64) << 32) | (l as u64) +} -- 2.30.2