Function marine::from_interface_values
source · pub fn from_interface_values<'a, T>(
values: &'a [IValue]
) -> Result<T, DeserializeError>where
T: Deserialize<'a>,
Expand description
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.,
}
);