chiark / gitweb /
ReportViaResponse: Provide and use From<IE>
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 30 Mar 2021 22:37:45 +0000 (23:37 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 31 Mar 2021 23:11:16 +0000 (00:11 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/clock.rs
src/deck.rs
src/error.rs
src/hand.rs

index 36a449323c258f3a9cc5c9d160c468117cb27bcc..bed54213b31a5e115e16121b0b9225b42bda1b45 100644 (file)
@@ -616,8 +616,7 @@ impl PieceTrait for Clock {
     let gpc = gs.pieces.byid_mut(piece)?;
     let held = gpc.held;
     let gpl = gs.players.byid(player)?;
-    let state: &mut State = gpc.xdata_mut_exp()
-      .map_err(|e| APOE::ReportViaResponse(e.into()))?;
+    let state: &mut State = gpc.xdata_mut_exp()?;
     let get_user = || opname.chars().next_back().unwrap().try_into().unwrap();
 
     enum Howish {
@@ -683,8 +682,7 @@ impl PieceTrait for Clock {
     };
 
     state.do_start_or_stop(piece, was_current, was_implied_running,
-                           held, &self.spec, ig)
-      .map_err(|e| APOE::ReportViaResponse(e.into()))?;
+                           held, &self.spec, ig)?;
 
     let log = log_did_to_piece(ioccults,&gs.occults, gpl, gpc, ipc, &did)
       .unwrap_or_else(|e| {
index e5e7e6f1ab84786f688acfd6cc216c9299488460..80c15fc19ec5a1a1820a5a888a2b92c4b0d1256a 100644 (file)
@@ -172,10 +172,7 @@ impl PieceTrait for Deck {
 
     dbgc!("ui op k entry", &opname);
     
-    let err_via_response =
-      |ie:IE| ApiPieceOpError::ReportViaResponse(ie.into());
-
-    let old_state = self.state(gpc, &goccults).map_err(err_via_response)?;
+    let old_state = self.state(gpc, &goccults)?;
   
     let (new_state, did) = match opname {
       "activate"   => (Enabled,  hformat!("enabled {}",         CORE_DESC)),
@@ -198,7 +195,7 @@ impl PieceTrait for Deck {
       let views = UniformOccultationView(new_view).views()?;
       Ok::<_,IE>((region, views))
     })
-      .transpose().map_err(err_via_response)?;
+      .transpose()?;
 
     let mut xupdates = vec![];
 
@@ -210,8 +207,7 @@ impl PieceTrait for Deck {
       xupdates.extend(
         remove_occultation(&mut gen.unique_gen(),
                            gplayers, gpieces, goccults, ipieces, ioccults,
-                           to_recalculate, piece)
-          .map_err(|ie| ApiPieceOpError::ReportViaResponse(ie.into()))?
+                           to_recalculate, piece)?
       );
     }
 
index 20f2fc78810a2523983907ee245a836f09648e88..06edb0bedbe0de9915d6fcc481a69f329dda42e6 100644 (file)
@@ -136,6 +136,11 @@ impl From<PlayerNotFound> for ApiPieceOpError {
     ApiPieceOpError::ReportViaResponse(x.into())
   }
 }
+impl From<InternalError> for ApiPieceOpError {
+  fn from(x: InternalError) -> ApiPieceOpError {
+    ApiPieceOpError::ReportViaResponse(x.into())
+  }
+}
 
 #[derive(Error,Debug,Serialize,Clone)]
 pub enum ErrorSignaledViaUpdate<POEPU: Debug> {
index 08227baed14ac786a2b7ceaa182f18fe72bc30b1..ead2202877b25ccfb776d27d78248b772ca9179e 100644 (file)
@@ -218,8 +218,7 @@ impl PieceTrait for Hand {
 
     let goccults = &mut gs.occults;
     let gpc = gpieces.byid_mut(piece)?;
-    let xdata = gpc.xdata.get_mut::<HandState,_>(default)
-      .map_err(|e| APOE::ReportViaResponse(e.into()))?;
+    let xdata = gpc.xdata.get_mut::<HandState,_>(default)?;
     let old_desc = self.sort.describe_html_inner(Some(xdata));
     let old_player = xdata.player();
 
@@ -255,7 +254,7 @@ impl PieceTrait for Hand {
               }.views()?;
               dbgc!("claiming got region", &region, &views);
               Ok::<_,IE>((region, views))
-            })().map_err(|ie| ApiPieceOpError::ReportViaResponse(ie.into()))?;
+            })()?;
             
             // actually do things:
             dbgc!("creating occ");
@@ -278,8 +277,7 @@ impl PieceTrait for Hand {
           Some(_) =>
             remove_occultation(&mut gen.unique_gen(),
                                gplayers, gpieces, goccults, ipieces, ioccults,
-                               to_recalculate, piece)
-            .map_err(|ie| ApiPieceOpError::ReportViaResponse(ie.into()))?,
+                               to_recalculate, piece)?,
         };
         (None, xupdates, hformat!("deactivated {}", &old_desc))
       }