[−][src]Function wasmer_interface_types_fl::values::from_interface_values
pub fn from_interface_values<'a, T>(
values: &'a [InterfaceValue]
) -> Result<T, DeserializeError> where
T: Deserialize<'a>,
Deserialize a set of InterfaceValue
s 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., } );