#substrate #scale #serialization #serde

无 std serde-scale-wrap

用于实现 Serialize/Deserialize 的类型的包装器,以自动实现 Encode/Decode

5 个不稳定版本

0.3.0 2021年7月2日
0.2.2 2020年10月15日
0.2.1 2020年10月10日
0.2.0 2020年10月8日
0.1.0 2020年10月8日

#1564 in 编码

Zlib 许可证

10KB
84 代码行

概述

为实现 Serialize/Deserialize 的类型提供包装器,以自动实现 Encode/Decode

示例

extern crate alloc;

use alloc::string::String;
use parity_scale_codec::{Decode, Encode};
use serde::{Deserialize, Serialize};
use serde_scale_wrap::Wrap;

#[derive(Debug, Deserialize, PartialEq, Serialize)]
struct Foo {
    x: i32,
    s: String,
}

let original = Foo { x: 3, s: "foo".into() };
let serialized = Wrap(&original).encode();
let Wrap(deserialized) = Wrap::<Foo>::decode(&mut &*serialized).unwrap();
assert_eq!(original, deserialized);

一致性

Option<bool> 根据 SCALE 编码序列化为单个字节,这与 Encode::encode 的结果不同 -- Encode 期望使用 OptionBool 代替。

功能

no_std 通过禁用默认功能得到支持。

  • std: 支持 std。默认启用。

🔖 构建依赖和宏处理程序中启用的功能也适用于常规依赖项,这可能导致 serde 在不希望时具有其 std 功能。Nightly cargo 通过 -Z features=host_dep 或以下在 .cargo/config 中防止这种情况发生

[unstable]
features = ["host_dep"]

例如,当依赖于 parity-scale-codec-derive 时会出现此问题。

贡献

所有贡献都必须在 zlib 许可证 下进行许可。

相关项目

依赖关系

~1.5–2.1MB
~50K SLoC