From 9898b333934693dcdcef6585ca490f361ab53934 Mon Sep 17 00:00:00 2001 From: Gavrilikhin Daniil Date: Sun, 14 May 2023 11:13:21 +0800 Subject: [PATCH] Omit None label in `LabeledSpan` when serializing --- src/protocol.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/protocol.rs b/src/protocol.rs index ef1c8b8..611b827 100644 --- a/src/protocol.rs +++ b/src/protocol.rs @@ -234,6 +234,7 @@ pub trait SourceCode: Send + Sync { #[derive(Debug, Clone, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct LabeledSpan { + #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] label: Option, span: SourceSpan, } @@ -337,7 +338,6 @@ fn test_serialize_labeled_span() { assert_eq!( json!(LabeledSpan::new(None, 0, 0)), json!({ - "label": null, "span": { "offset": 0, "length": 0 } }) ); @@ -363,6 +363,12 @@ fn test_deserialize_labeled_span() { .unwrap(); assert_eq!(span, LabeledSpan::new(None, 0, 0)); + let span: LabeledSpan = serde_json::from_value(json!({ + "span": { "offset": 0, "length": 0 } + })) + .unwrap(); + assert_eq!(span, LabeledSpan::new(None, 0, 0)); + let span: LabeledSpan = serde_json::from_value(json!({ "label": "label", "span": { "offset": 0, "length": 0 }