pub fn from_interface_values<'a, T>(
    values: &'a [IValue]
) -> Result<T, DeserializeError> where
    T: Deserialize<'a>, 
Expand description

Deserialize a set of IValues to a type T that implements the Deserialize trait.

This is not a requirement to use WIT, but Serde provides an even nicer API to the user to rebuild its complex types from WIT values.

Example

use wasmer_interface_types::{
    values::{IValue, from_interface_values},
    vec1::Vec1,
};
use serde::Deserialize;

#[derive(Deserialize, Debug, PartialEq)]
struct S(i32, i64);

#[derive(Deserialize, Debug, PartialEq)]
struct T<'a> {
    x: &'a str,
    s: S,
    y: f32,
};

let values = vec![IValue::Record(NEVec::new(vec![
    IValue::String("abc".to_string()),
    IValue::Record(NEVec::new(vec![IValue::I32(1), IValue::I64(2)]).unwrap()),
    IValue::F32(3.),
]).unwrap())];
let t = from_interface_values::<T>(&values).unwrap();

assert_eq!(
    t,
    T {
        x: "abc",
        s: S(1, 2),
        y: 3.,
    }
);