Browse Source

optimize hashmap insertion

Bunny Bites 1 year ago
parent
commit
1a9d1eda19
1 changed files with 15 additions and 8 deletions
  1. 15 8
      packages/html/src/events/form.rs

+ 15 - 8
packages/html/src/events/form.rs

@@ -62,14 +62,21 @@ impl FormData {
                 In this case we would want to deserialize the value as follows
                 favourite_language: "rust"
             */
-            if values.len() > 1 {
-                // handling multiple values - case 1
-                parsed_values.insert(fieldname, ValueType::VecText(values.clone()));
-            } else {
-                // handle single value - case 2
-                let prepared_value = values.into_iter().next().unwrap();
-                parsed_values.insert(fieldname, ValueType::Text(prepared_value));
-            }
+            parsed_values.insert(
+                fieldname,
+                if values.len() > 1 {
+                    // handling multiple values - case 1
+                    ValueType::VecText(values)
+                } else {
+                    // handle single value - case 2
+                    ValueType::Text(
+                        values
+                            .into_iter()
+                            .next()
+                            .ok_or_else(|| serde_json::Error::custom("Values array is empty"))?,
+                    )
+                },
+            );
         }
 
         // convert HashMap to JSON string