@@ -712,7 +712,9 @@ fn parse_value(s: &str, t: DataType, name: &str) -> Result<Value, RequestError>
712712 match t {
713713 DataType :: String => Ok ( Value :: String ( String :: from ( s) ) ) ,
714714 DataType :: Double => {
715- let v = s. parse :: < f64 > ( ) . unwrap ( ) ;
715+ let v = s. parse :: < f64 > ( ) . map_err ( |e| RequestError :: Deserializing {
716+ text : e. to_string ( ) ,
717+ } ) ?;
716718 Ok ( Value :: Double ( OrderedFloat :: from ( v) ) )
717719 }
718720 DataType :: Bool => {
@@ -723,11 +725,15 @@ fn parse_value(s: &str, t: DataType, name: &str) -> Result<Value, RequestError>
723725 }
724726 }
725727 DataType :: Long => {
726- let v = s. parse :: < i64 > ( ) . unwrap ( ) ;
728+ let v = s. parse :: < i64 > ( ) . map_err ( |e| RequestError :: Deserializing {
729+ text : e. to_string ( ) ,
730+ } ) ?;
727731 Ok ( Value :: Long ( v) )
728732 }
729733 DataType :: UnsignedLong => {
730- let v = s. parse :: < u64 > ( ) . unwrap ( ) ;
734+ let v = s. parse :: < u64 > ( ) . map_err ( |e| RequestError :: Deserializing {
735+ text : e. to_string ( ) ,
736+ } ) ?;
731737 Ok ( Value :: UnsignedLong ( v) )
732738 }
733739 DataType :: Duration => match parse_duration ( s) {
@@ -737,11 +743,15 @@ fn parse_value(s: &str, t: DataType, name: &str) -> Result<Value, RequestError>
737743 } ) ,
738744 } ,
739745 DataType :: Base64Binary => {
740- let b = decode ( s) . unwrap ( ) ;
746+ let b = decode ( s) . map_err ( |e| RequestError :: Deserializing {
747+ text : e. to_string ( ) ,
748+ } ) ?;
741749 Ok ( Value :: Base64Binary ( b) )
742750 }
743751 DataType :: TimeRFC => {
744- let t = DateTime :: parse_from_rfc3339 ( s) . unwrap ( ) ;
752+ let t = DateTime :: parse_from_rfc3339 ( s) . map_err ( |e| RequestError :: Deserializing {
753+ text : e. to_string ( ) ,
754+ } ) ?;
745755 Ok ( Value :: TimeRFC ( t) )
746756 }
747757 }
0 commit comments