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