#substrate #scale #serialization #serializer-deserializer #serde

no-std serde-scale

Serde 编码器和解码器,用于 SCALE 编码

4 个版本

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

#1231编码

Download history 14/week @ 2024-04-02 6/week @ 2024-04-09 13/week @ 2024-04-16 4/week @ 2024-04-23

107 每月下载次数
2 crates 中使用

Zlib 许可证

52KB
1.5K SLoC

概述

基于 SCALE 编码serde 编码器和解码器。

示例

use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, PartialEq, Serialize)]
struct Point {
    x: i8,
    y: i8,
}

let point = Point { x: 3, y: 4 };
let deserialized = serde_scale::from_slice(&serde_scale::to_vec(&point).unwrap()).unwrap();
assert_eq!(point, deserialized);

一致性

Option<bool> 根据 SCALE 编码被序列化为单个字节。

特性

no_std 通过禁用默认特性得到支持。

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

🔖 构建依赖和 proc-macros 中启用的特性也会为正常依赖项启用,这可能导致 serde 在不希望的情况下具有 std 特性。Nightly cargo 通过 -Z features=host_dep 或以下在 .cargo/config

[unstable]
features = ["host_dep"]

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

测试

大多数测试位于(工作区的一部分) serde-scale-tests crate 中(以避免启用 serde 特性的依赖项)。

cargo test --workspace

贡献

所有贡献都必须在 zlib 许可证 下授权。

相关项目

parity-scale-codec:参考 Rust 实现

依赖项

~0.4–1MB
~22K SLoC