Trait Deserialize

Source
pub trait Deserialize: Sized {
    // Required method
    fn deserialize(value: &Value) -> Result<Self, Error>;
}
Expand description

A trait for types that can be deserialized from a Value.

§Example

use shopify_function_wasm_api::{Context, Deserialize, Value, read::Error};

#[derive(Debug, PartialEq)]
struct MyStruct {
    value: i32,
}

impl Deserialize for MyStruct {
    fn deserialize(value: &Value) -> Result<Self, Error> {
        if !value.is_obj() {
            return Err(Error::InvalidType);
        }
        let value = i32::deserialize(&value.get_obj_prop("value"))?;
        Ok(MyStruct { value })
    }
}

let context = Context::new_with_input(serde_json::json!({ "value": 1 }));
let value = context.input_get().unwrap();
let my_struct = MyStruct::deserialize(&value).unwrap();
assert_eq!(my_struct, MyStruct { value: 1 });

Required Methods§

Source

fn deserialize(value: &Value) -> Result<Self, Error>

Deserialize a value from a Value.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Deserialize for bool

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for char

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for f64

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for i8

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for i16

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for i32

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for i64

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for isize

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for u8

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for u16

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for u32

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for u64

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for ()

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for usize

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl Deserialize for String

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize> Deserialize for (T0, T1)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize, T2: Deserialize> Deserialize for (T0, T1, T2)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize, T2: Deserialize, T3: Deserialize> Deserialize for (T0, T1, T2, T3)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize, T2: Deserialize, T3: Deserialize, T4: Deserialize> Deserialize for (T0, T1, T2, T3, T4)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize, T2: Deserialize, T3: Deserialize, T4: Deserialize, T5: Deserialize> Deserialize for (T0, T1, T2, T3, T4, T5)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize, T2: Deserialize, T3: Deserialize, T4: Deserialize, T5: Deserialize, T6: Deserialize> Deserialize for (T0, T1, T2, T3, T4, T5, T6)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize, T2: Deserialize, T3: Deserialize, T4: Deserialize, T5: Deserialize, T6: Deserialize, T7: Deserialize> Deserialize for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize, T2: Deserialize, T3: Deserialize, T4: Deserialize, T5: Deserialize, T6: Deserialize, T7: Deserialize, T8: Deserialize> Deserialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T0: Deserialize, T1: Deserialize, T2: Deserialize, T3: Deserialize, T4: Deserialize, T5: Deserialize, T6: Deserialize, T7: Deserialize, T8: Deserialize, T9: Deserialize> Deserialize for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for Option<T>

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 0]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 1]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 2]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 3]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 4]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 5]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 6]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 7]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 8]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 9]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 10]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 11]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 12]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 13]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 14]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 15]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 16]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 17]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 18]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 19]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 20]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 21]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 22]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 23]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 24]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 25]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 26]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 27]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 28]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 29]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 30]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 31]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for [T; 32]

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for BTreeMap<String, T>

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for Vec<T>

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Source§

impl<T: Deserialize> Deserialize for HashMap<String, T>

Source§

fn deserialize(value: &Value) -> Result<Self, Error>

Implementors§