chiark / gitweb /
errors: Make TUE::Error contain a bespoke TUE_P
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 13 Jul 2021 17:33:06 +0000 (18:33 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 13 Jul 2021 17:33:29 +0000 (18:33 +0100)
This will make space for a cseq there too.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/updates.rs

index 3c1cf29bf4a960d6d08295349a9c0e61542f8c58..3ff0ad29a8d4252ddfd23689f63b1661d7253e40 100644 (file)
@@ -255,11 +255,20 @@ enum TransmitUpdateEntry<'u> {
   SetLinks(Html),
   #[serde(serialize_with="serialize_logentry")]
   Log(TransmitUpdateLogEntry<'u>),
-  Error(ErrorSignaledViaUpdate<TUE_P<'u>, &'u str>),
+  Error(ErrorSignaledViaUpdate<ETUE_P<'u>, &'u str>),
 }
 
 type TransmitUpdateLogEntry<'u> = (&'u Timezone, &'u CommittedLogEntry);
 
+#[allow(non_camel_case_types)]
+#[derive(Debug,Serialize)]
+struct ErrorTransmitUpdateEntry_Piece<'u> {
+  #[serde(flatten)]
+  tue: TransmitUpdateEntry_Piece<'u>,
+}
+#[allow(non_camel_case_types)]
+type ETUE_P<'u> = ErrorTransmitUpdateEntry_Piece<'u>;
+
 #[allow(non_camel_case_types)]
 #[derive(Debug,Serialize)]
 struct TransmitUpdateEntry_Piece<'u> {
@@ -975,12 +984,17 @@ impl PreparedUpdate {
                                  ref error_msg, ref state } => {
               let c = state.by_client.as_ref().map(|(_,c,_)| *c);
               if c == None || c == Some(dest) {
-                let state = match pue_piece_to_tue_p(state, player) {
+                let tue = match pue_piece_to_tue_p(state, player) {
                   Some(tue) => tue,
                   None => continue,
                 };
                 TUE::Error(
-                  ESVU::PieceOpError { error, error_msg, partially, state }
+                  ESVU::PieceOpError {
+                    error, error_msg, partially,
+                    state: { ETUE_P {
+                      tue,
+                    } },
+                  }
                 )
               } else {
                 match partially {