[][src]Function fluence_faas::from_interface_values

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

Deserialize a set of InterfaceValues 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::{InterfaceValue, 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![InterfaceValue::Record(Vec1::new(vec![
    InterfaceValue::String("abc".to_string()),
    InterfaceValue::Record(Vec1::new(vec![InterfaceValue::I32(1), InterfaceValue::I64(2)]).unwrap()),
    InterfaceValue::F32(3.),
]).unwrap())];
let t = from_interface_values::<T>(&values).unwrap();

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