From 9a652d851fa962183e60b11cbb4e34477a979aac Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 24 Nov 2023 17:40:05 +0100 Subject: [PATCH] fix: improve VecLogErr messages --- src/serializer/vec_log_err.rs | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/src/serializer/vec_log_err.rs b/src/serializer/vec_log_err.rs index 9e3e32c..c2e89ff 100644 --- a/src/serializer/vec_log_err.rs +++ b/src/serializer/vec_log_err.rs @@ -20,13 +20,6 @@ where where D: serde::Deserializer<'de>, { - #[derive(serde::Deserialize)] - #[serde(untagged)] - enum GoodOrError { - Good(T), - Error(serde_json::Value), - } - struct SeqVisitor(PhantomData); impl<'de, T> Visitor<'de> for SeqVisitor @@ -46,16 +39,14 @@ where let mut values = Vec::with_capacity(seq.size_hint().unwrap_or_default()); let mut warnings = Vec::new(); - while let Some(value) = seq.next_element()? { - match value { - GoodOrError::::Good(value) => { - values.push(value); - } - GoodOrError::::Error(value) => { - warnings.push(format!( - "error deserializing item: {}", - serde_json::to_string(&value).unwrap_or_default() - )); + loop { + match seq.next_element::() { + Ok(val) => match val { + Some(val) => values.push(val), + None => break, + }, + Err(e) => { + warnings.push(format!("error deserializing item: {e}")); } } } @@ -186,8 +177,8 @@ mod tests { insta::assert_debug_snapshot!(res.items.warnings, @r###" [ - "error deserializing item: {\"xyz\":\"i2\"}", - "error deserializing item: {\"namra\":\"i4\"}", + "error deserializing item: missing field `name` at line 1 column 40", + "error deserializing item: missing field `name` at line 1 column 73", ] "###); }