From 1a92f125b2fae78c7fc0b211dbe355377e7a30eb Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 3 Jan 2023 08:51:58 -0600 Subject: [PATCH] support Option --- packages/core/src/nodes.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/core/src/nodes.rs b/packages/core/src/nodes.rs index bb9f6734b..1a4c74a99 100644 --- a/packages/core/src/nodes.rs +++ b/packages/core/src/nodes.rs @@ -5,7 +5,7 @@ use bumpalo::boxed::Box as BumpBox; use bumpalo::Bump; use std::{ any::{Any, TypeId}, - cell::{self, Cell, RefCell, UnsafeCell}, + cell::{Cell, RefCell, UnsafeCell}, fmt::{Arguments, Debug}, future::Future, }; @@ -611,7 +611,7 @@ impl PartialEq for BorrowedAttributeValue<'_> { } #[cfg(feature = "serialize")] -fn serialize_any_value(_: &cell::Ref<'_, dyn AnyValue>, _: S) -> Result +fn serialize_any_value(_: &std::cell::Ref<'_, dyn AnyValue>, _: S) -> Result where S: serde::Serializer, { @@ -619,7 +619,7 @@ where } #[cfg(feature = "serialize")] -fn deserialize_any_value<'de, 'a, D>(_: D) -> Result, D::Error> +fn deserialize_any_value<'de, 'a, D>(_: D) -> Result, D::Error> where D: serde::Deserializer<'de>, { @@ -888,3 +888,12 @@ impl<'a> IntoAttributeValue<'a> for BumpBox<'a, dyn AnyValue> { AttributeValue::Any(RefCell::new(Some(self))) } } + +impl<'a, T: IntoAttributeValue<'a>> IntoAttributeValue<'a> for Option { + fn into_value(self, bump: &'a Bump) -> AttributeValue<'a> { + match self { + Some(val) => val.into_value(bump), + None => AttributeValue::None, + } + } +}