From 164ef2a9f314af39d230b8167a68dd7ba0dd2ee1 Mon Sep 17 00:00:00 2001 From: Louis Date: Mon, 5 Aug 2024 13:05:49 +0300 Subject: [PATCH] chore: implement serde::Serialize for Either (#2209) This adds an implementation of serde::Serialize for all the Either types. Long term, we might want to use the either crate, but for now this makes this implementation usable with serde. --- crates/napi/src/bindgen_runtime/js_values/either.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crates/napi/src/bindgen_runtime/js_values/either.rs b/crates/napi/src/bindgen_runtime/js_values/either.rs index 37f298f9..15f90e81 100644 --- a/crates/napi/src/bindgen_runtime/js_values/either.rs +++ b/crates/napi/src/bindgen_runtime/js_values/either.rs @@ -150,6 +150,18 @@ macro_rules! either_n { } } } + + #[cfg(feature = "serde-json")] + impl< $( $parameter: serde::Serialize ),+ > serde::Serialize for $either_name< $( $parameter ),+ > { + fn serialize(&self, serializer: Ser) -> Result + where + Ser: serde::Serializer + { + match &self { + $( Self:: $parameter (v) => serializer.serialize_some(v) ),+ + } + } + } }; }