Function scale_value::serde::from_value
source · pub fn from_value<'de, Ctx, T: Deserialize<'de>>(
value: Value<Ctx>
) -> Result<T, DeserializerError>
Expand description
Attempt to convert a crate::Value
into another type via serde.
Examples
Use serde to convert a value into a built-in type:
use scale_value::Value;
let value = Value::unnamed_composite(vec![
Value::u128(1),
Value::u128(2),
Value::u128(3),
]);
let arr: [u8; 3] = scale_value::serde::from_value(value).unwrap();
Converting values to a custom type:
use scale_value::Value;
use serde::{ Serialize, Deserialize };
#[derive(Serialize, Deserialize, PartialEq, Debug)]
enum Foo {
A { is_valid: bool, name: String },
B(u8, bool)
}
let value1 = Value::named_variant("A", [
("name", Value::string("James")),
("is_valid", Value::bool(true)),
]);
let foo1: Foo = scale_value::serde::from_value(value1).unwrap();
assert_eq!(foo1, Foo::A { is_valid: true, name: "James".into() });
let value2 = Value::unnamed_variant("B", [
Value::u128(123),
Value::bool(true),
]);
let foo2: Foo = scale_value::serde::from_value(value2).unwrap();
assert_eq!(foo2, Foo::B(123, true));