Skip to content

Commit b8f6381

Browse files
committed
Remove some unwrap
1 parent df77854 commit b8f6381

File tree

1 file changed

+19
-24
lines changed

1 file changed

+19
-24
lines changed

src/de.rs

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -70,19 +70,11 @@ impl<'js> Deserializer<'js> {
7070
where
7171
V: de::Visitor<'de>,
7272
{
73-
if self.value.is_int() {
74-
return visitor.visit_i32(
75-
self.value
76-
.as_int()
77-
.ok_or_else(|| Error::new("Failed to convert value to i32"))?,
78-
);
73+
if let Some(i) = self.value.as_int() {
74+
return visitor.visit_i32(i);
7975
}
8076

81-
if self.value.is_float() {
82-
let f64_representation = self
83-
.value
84-
.as_float()
85-
.ok_or_else(|| Error::new("Failed to convert value to f64"))?;
77+
if let Some(f64_representation) = self.value.as_float() {
8678
let is_positive = f64_representation.is_sign_positive();
8779
let safe_integer_range = (MIN_SAFE_INTEGER as f64)..=(MAX_SAFE_INTEGER as f64);
8880
let whole = f64_representation.fract() == 0.0;
@@ -98,7 +90,11 @@ impl<'js> Deserializer<'js> {
9890

9991
return visitor.visit_f64(f64_representation);
10092
}
101-
unreachable!()
93+
94+
Err(Error::new(Exception::throw_type(
95+
self.value.ctx(),
96+
"Unsupported number type",
97+
)))
10298
}
10399

104100
/// Pops the last visited value present in the stack.
@@ -146,8 +142,8 @@ impl<'de> de::Deserializer<'de> for &mut Deserializer<'de> {
146142
}
147143
}
148144

149-
if self.value.is_bool() {
150-
return visitor.visit_bool(self.value.as_bool().expect("value to be boolean"));
145+
if let Some(b) = self.value.as_bool() {
146+
return visitor.visit_bool(b);
151147
}
152148

153149
if get_class_id(&self.value) == ClassId::Bool as u32 {
@@ -188,12 +184,9 @@ impl<'de> de::Deserializer<'de> for &mut Deserializer<'de> {
188184
}
189185
}
190186

191-
if self.value.is_array() {
192-
let arr = self.value.as_array().unwrap().clone();
193-
194-
let seq_access = SeqAccess::new(self, arr)?;
195-
let result = visitor.visit_seq(seq_access);
196-
return result;
187+
if let Some(arr) = self.value.as_array() {
188+
let seq_access = SeqAccess::new(self, arr.clone())?;
189+
return visitor.visit_seq(seq_access);
197190
}
198191

199192
if self.value.is_object() {
@@ -416,8 +409,8 @@ impl<'a, 'de: 'a> SeqAccess<'a, 'de> {
416409
.as_object()
417410
.get(PredefinedAtom::Length)
418411
.map_err(Error::new)?;
419-
let length: usize = if value.is_number() {
420-
value.as_number().unwrap() as usize
412+
let length: usize = if let Some(n) = value.as_number() {
413+
n as usize
421414
} else {
422415
let value_of: Function = value
423416
.as_object()
@@ -494,8 +487,10 @@ pub(crate) fn get_to_json<'a>(value: &Value<'a>) -> Option<Function<'a>> {
494487
};
495488
let f = unsafe { Value::from_raw(value.ctx().clone(), f) };
496489

497-
if f.is_function() {
498-
Some(f.into_function().unwrap())
490+
if f.is_function()
491+
&& let Some(f) = f.into_function()
492+
{
493+
Some(f)
499494
} else {
500495
None
501496
}

0 commit comments

Comments
 (0)