Function scale_value::serde::to_value

source ·
pub fn to_value<T: Serialize>(ty: T) -> Result<Value<()>, SerializerError>
Expand description

Attempt to convert some type into a crate::Value via serde.

Examples

Convert a built-in array of values into a crate::Value:

use scale_value::Value;

let arr = [1u8, 2u8, 3u8];

let val = scale_value::serde::to_value(arr).unwrap();
assert_eq!(val, Value::unnamed_composite([
    Value::u128(1),
    Value::u128(2),
    Value::u128(3),
]));

Converting some custom type to a crate::Value:

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 foo = Foo::A { is_valid: true, name: "James".into() };

let value = scale_value::serde::to_value(foo).unwrap();
assert_eq!(value, Value::named_variant("A", [
    ("is_valid", Value::bool(true)),
    ("name", Value::string("James")),
]));