#serde #data-model #tags #run-time #info #primitive #type-info

serde-typeinfo

基于serde数据模型的运行时类型信息

1个不稳定版本

0.1.0 2023年3月28日

#1578编码

MIT/Apache

23KB
472

serde-typeinfo

"序列化"类型信息到一个基于serde数据模型的运行时标签。

示例

  • u8整数将被"序列化"为不包含其值的Primitive::U8枚举
use serde_typeinfo::{TypeTag, Primitive};

assert_eq!(
    TypeTag::from_value(&32_u8),
    TypeTag::Primitive(Primitive::U8), // only tag, not includes 32
);
  • 具有serde::Serialize特实现的用户定义结构体将被"序列化"为包含其名称以及字段名称和类型的TypeTag::Struct,但不包括值。
use serde_typeinfo::{TypeTag, Primitive};
use serde::Serialize;

#[derive(Serialize)]
struct A {
    a: u8,
    b: u8,
}

assert_eq!(
    TypeTag::from_value(&A { a: 2, b: 3 }),
    TypeTag::Struct {
        name: "A",
        fields: vec![
            ("a", Primitive::U8.into()),
            ("b", Primitive::U8.into()),
        ]
    }
);

许可

© 2023 Toshiki Teramura (@termoshtt)

本项目许可协议为以下之一:

您可选择其中一种。

依赖项

~110–345KB