55use crate :: error:: Error as LibError ;
66use crate :: error:: Result as LibResult ;
77use neon:: prelude:: * ;
8+ use neon:: types:: buffer:: TypedArray ;
89use serde:: de:: Visitor ;
910use serde:: de:: {
1011 DeserializeOwned , DeserializeSeed , EnumAccess , MapAccess , SeqAccess , Unexpected , VariantAccess ,
@@ -104,10 +105,7 @@ impl<'x, 'd, 'a, 'j, C: Context<'j>> serde::de::Deserializer<'x>
104105 len
105106 ) ) ) ;
106107 }
107- let key = prop_names
108- . get ( self . cx , 0 ) ?
109- . downcast :: < JsString , _ > ( self . cx )
110- . or_throw ( self . cx ) ?;
108+ let key: Handle < JsString > = prop_names. get ( self . cx , 0 ) ?;
111109 let enum_value = val. get ( self . cx , key) ?;
112110 let key = key. value ( self . cx ) ;
113111 visitor. visit_enum ( JsEnumAccess :: new ( self . cx , key, Some ( enum_value) ) )
@@ -125,7 +123,7 @@ impl<'x, 'd, 'a, 'j, C: Context<'j>> serde::de::Deserializer<'x>
125123 . input
126124 . downcast :: < JsBuffer , _ > ( self . cx )
127125 . or_throw ( self . cx ) ?;
128- let copy = self . cx . borrow ( & buff, |buff| Vec :: from ( buff . as_slice ( ) ) ) ;
126+ let copy = buff. as_slice ( self . cx ) . to_vec ( ) ;
129127 visitor. visit_bytes ( & copy)
130128 }
131129
@@ -137,7 +135,7 @@ impl<'x, 'd, 'a, 'j, C: Context<'j>> serde::de::Deserializer<'x>
137135 . input
138136 . downcast :: < JsBuffer , _ > ( self . cx )
139137 . or_throw ( self . cx ) ?;
140- let copy = self . cx . borrow ( & buff, |buff| Vec :: from ( buff . as_slice ( ) ) ) ;
138+ let copy = buff. as_slice ( self . cx ) . to_vec ( ) ;
141139 visitor. visit_byte_buf ( copy)
142140 }
143141
@@ -246,7 +244,7 @@ impl<'x, 'a, 'j, C: Context<'j>> MapAccess<'x> for JsObjectAccess<'a, 'j, C> {
246244 if self . idx >= self . len {
247245 return Err ( LibError :: ArrayIndexOutOfBounds ( self . len , self . idx ) ) ;
248246 }
249- let prop_name = self . prop_names . get ( self . cx , self . idx ) ?;
247+ let prop_name: Handle < JsString > = self . prop_names . get ( self . cx , self . idx ) ?;
250248 let value = self . input . get ( self . cx , prop_name) ?;
251249
252250 self . idx += 1 ;
0 commit comments