diff --git a/convex-schema-parser.cabal b/convex-schema-parser.cabal
--- a/convex-schema-parser.cabal
+++ b/convex-schema-parser.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.0
 name:            convex-schema-parser
-version:         0.1.7.0
+version:         0.1.8.0
 license:         MIT
 author:          Norbert Dzikowski
 maintainer:      lambdax.one@icloud.com
diff --git a/src/Backend/Rust.hs b/src/Backend/Rust.hs
--- a/src/Backend/Rust.hs
+++ b/src/Backend/Rust.hs
@@ -953,7 +953,7 @@
         then "Value::Array(" ++ varName ++ ".iter().map(|item| " ++ itemConversion ++ ").collect::<Result<Vec<_>, _>>()?)"
         else "Value::Array(" ++ varName ++ ".iter().map(|item| " ++ itemConversion ++ ").collect())"
 innerValueToConvexOptional varName (Schema.VObject _) =
-  varName ++ ".to_convex_value()"
+  varName ++ ".to_convex_value()?"
 innerValueToConvexOptional varName t
   | isComplexForBTreeMap t = "Value::try_from(serde_json::to_value(" ++ toClonedValue varName t ++ ").unwrap_or(\"unable to serialize\".into()))?"
   | otherwise = "Value::from(" ++ toClonedValue varName t ++ ")"
@@ -966,7 +966,7 @@
         then "Value::Array(" ++ varName ++ ".iter().map(|item| " ++ itemConversion ++ ").collect::<Result<Vec<_>, _>>()?)"
         else "Value::Array(" ++ varName ++ ".iter().map(|item| " ++ itemConversion ++ ").collect())"
 innerValueToConvexArray varName (Schema.VObject _) =
-  varName ++ ".to_convex_value()"
+  varName ++ ".to_convex_value()?"
 innerValueToConvexArray varName t
   | isComplexForBTreeMap t = "Value::try_from(serde_json::to_value(" ++ toClonedValue varName t ++ ").unwrap_or(\"unable to serialize\".into()))"
   | otherwise = "Value::from(" ++ toClonedValue varName t ++ ")"
