impl TryFrom<&str> for VisiblePieceId {
type Error = AE;
- fn try_from(s : &str) -> Result<VisiblePieceId,AE> {
- 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 {
+use crate::imports::*;
+
#[macro_export]
macro_rules! display_consequential_impls {
( $x:path ) => {
}
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)
+}