From f6be0786a0898ff6ed54df3649ed9193c06ef966 Mon Sep 17 00:00:00 2001 From: Diego Stratta Date: Fri, 13 Aug 2021 19:24:04 -0300 Subject: [PATCH] Implement `From> for Option>` --- src/types/maybe_undefined.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/types/maybe_undefined.rs b/src/types/maybe_undefined.rs index 69693b50..81a6048f 100644 --- a/src/types/maybe_undefined.rs +++ b/src/types/maybe_undefined.rs @@ -156,6 +156,16 @@ where } } +impl From> for Option> { + fn from(maybe_undefined: MaybeUndefined) -> Self { + match maybe_undefined { + MaybeUndefined::Undefined => None, + MaybeUndefined::Null => Some(None), + MaybeUndefined::Value(value) => Some(Some(value)), + } + } +} + #[cfg(test)] mod tests { use crate::*; @@ -235,4 +245,19 @@ mod tests { } ); } + + #[test] + fn test_maybe_undefined_to_nested_option() { + assert_eq!(Option::>::from(MaybeUndefined::Undefined), None); + + assert_eq!( + Option::>::from(MaybeUndefined::Null), + Some(None) + ); + + assert_eq!( + Option::>::from(MaybeUndefined::Value(42)), + Some(Some(42)) + ); + } }