Struct serde_wasm_bindgen::Deserializer
source · pub struct Deserializer { /* private fields */ }
Expand description
A newtype that allows using any JsValue
as a serde::Deserializer
.
Trait Implementations§
source§impl<'de> Deserializer<'de> for Deserializer
impl<'de> Deserializer<'de> for Deserializer
source§fn deserialize_char<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_char<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Converts a JavaScript string to a Rust char.
By default we don’t perform detection of single chars because it’s pretty complicated,
but if we get a hint that they’re expected, this methods allows to avoid heap allocations
of an intermediate String
by directly converting numeric codepoints instead.
source§fn deserialize_newtype_struct<V: Visitor<'de>>(
self,
_name: &'static str,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_newtype_struct<V: Visitor<'de>>( self, _name: &'static str, visitor: V ) -> Result<V::Value, Error>
Simply calls visit_newtype_struct
.
source§fn deserialize_seq<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_seq<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Supported inputs:
- JS iterable (an object with
[Symbol.iterator]
). Supported outputs: - Any Rust sequence from Serde point of view (
Vec
,HashSet
, etc.)
source§fn deserialize_tuple<V: Visitor<'de>>(
self,
_len: usize,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_tuple<V: Visitor<'de>>( self, _len: usize, visitor: V ) -> Result<V::Value, Error>
Forwards to Self::deserialize_seq
.
source§fn deserialize_tuple_struct<V: Visitor<'de>>(
self,
_name: &'static str,
len: usize,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_tuple_struct<V: Visitor<'de>>( self, _name: &'static str, len: usize, visitor: V ) -> Result<V::Value, Error>
Forwards to Self::deserialize_tuple
.
source§fn deserialize_map<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_map<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Supported inputs:
- A JS iterable that is expected to return
[key, value]
pairs. - A JS object, which will be iterated using
Object.entries
. Supported outputs: - A Rust key-value map (
HashMap
,BTreeMap
, etc.). - A typed Rust structure with
#[derive(Deserialize)]
.
source§fn deserialize_struct<V: Visitor<'de>>(
self,
_name: &'static str,
fields: &'static [&'static str],
visitor: V
) -> Result<V::Value, Error>
fn deserialize_struct<V: Visitor<'de>>( self, _name: &'static str, fields: &'static [&'static str], visitor: V ) -> Result<V::Value, Error>
Supported inputs:
- A plain JS object. Supported outputs:
- A typed Rust structure with
#[derive(Deserialize)]
.
source§fn deserialize_enum<V: Visitor<'de>>(
self,
_name: &'static str,
_variants: &'static [&'static str],
visitor: V
) -> Result<V::Value, Error>
fn deserialize_enum<V: Visitor<'de>>( self, _name: &'static str, _variants: &'static [&'static str], visitor: V ) -> Result<V::Value, Error>
Here we try to be compatible with serde-json
, which means supporting:
"Variant"
- gets converted to a unit variantMyEnum::Variant
{ Variant: ...payload... }
- gets converted to aMyEnum::Variant { ...payload... }
.
source§fn deserialize_ignored_any<V: Visitor<'de>>(
self,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_ignored_any<V: Visitor<'de>>( self, visitor: V ) -> Result<V::Value, Error>
Ignores any value without calling to the JS side even to check its type.
source§fn deserialize_bytes<V: Visitor<'de>>(
self,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_bytes<V: Visitor<'de>>( self, visitor: V ) -> Result<V::Value, Error>
We can’t take references to JS memory, so forwards to an owned Self::deserialize_byte_buf
.
source§fn deserialize_byte_buf<V: Visitor<'de>>(
self,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_byte_buf<V: Visitor<'de>>( self, visitor: V ) -> Result<V::Value, Error>
Serde expects visit_byte_buf
to be called only in response to an explicit deserialize_bytes
,
so we provide conversions here.
Supported inputs:
ArrayBuffer
- converted to anUint8Array
view first.Uint8Array
,Array
- copied to a newly createdVec<u8>
on the Rust side.
source§fn deserialize_any<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_any<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserializer
to figure out how to drive the visitor based
on what data type is in the input. Read moresource§fn deserialize_unit<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_unit<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a unit value.source§fn deserialize_unit_struct<V: Visitor<'de>>(
self,
_name: &'static str,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_unit_struct<V: Visitor<'de>>( self, _name: &'static str, visitor: V ) -> Result<V::Value, Error>
Deserialize
type is expecting a unit struct with a
particular name.source§fn deserialize_bool<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_bool<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a bool
value.source§fn deserialize_f32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_f32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a f32
value.source§fn deserialize_f64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_f64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a f64
value.source§fn deserialize_identifier<V: Visitor<'de>>(
self,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_identifier<V: Visitor<'de>>( self, visitor: V ) -> Result<V::Value, Error>
Deserialize
type is expecting the name of a struct
field or the discriminant of an enum variant.source§fn deserialize_str<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_str<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a string value and does
not benefit from taking ownership of buffered data owned by the
Deserializer
. Read moresource§fn deserialize_string<V: Visitor<'de>>(
self,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_string<V: Visitor<'de>>( self, visitor: V ) -> Result<V::Value, Error>
Deserialize
type is expecting a string value and would
benefit from taking ownership of buffered data owned by the
Deserializer
. Read moresource§fn deserialize_i8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_i8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting an i8
value.source§fn deserialize_i16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_i16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting an i16
value.source§fn deserialize_i32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_i32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting an i32
value.source§fn deserialize_u8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_u8<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a u8
value.source§fn deserialize_u16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_u16<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a u16
value.source§fn deserialize_u32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_u32<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a u32
value.source§fn deserialize_i64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_i64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting an i64
value.source§fn deserialize_u64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
fn deserialize_u64<V: Visitor<'de>>(self, visitor: V) -> Result<V::Value, Error>
Deserialize
type is expecting a u64
value.source§fn deserialize_option<V: Visitor<'de>>(
self,
visitor: V
) -> Result<V::Value, Error>
fn deserialize_option<V: Visitor<'de>>( self, visitor: V ) -> Result<V::Value, Error>
Deserialize
type is expecting an optional value. Read moresource§fn is_human_readable(&self) -> bool
fn is_human_readable(&self) -> bool
Deserialize
implementations should expect to
deserialize their human-readable form. Read moresource§impl From<JsValue> for Deserializer
impl From<JsValue> for Deserializer
source§impl<'de> IntoDeserializer<'de, Error> for Deserializer
impl<'de> IntoDeserializer<'de, Error> for Deserializer
§type Deserializer = Deserializer
type Deserializer = Deserializer
source§fn into_deserializer(self) -> Self::Deserializer
fn into_deserializer(self) -> Self::Deserializer
source§impl<'de> VariantAccess<'de> for Deserializer
impl<'de> VariantAccess<'de> for Deserializer
§type Error = Error
type Error = Error
EnumAccess
.