#data-encoding #mavryk #serialization #binary #type #dynamic #binary-format

mavryk_data_encoding

用于编码/解码与mavryk数据编码兼容的数据的实用程序

2个不稳定版本

0.6.0 2024年7月2日
0.5.2 2024年7月2日

#1267 in 编码

Download history 272/week @ 2024-07-01 19/week @ 2024-07-22 93/week @ 2024-07-29 66/week @ 2024-08-05 147/week @ 2024-08-12

每月325次下载
用于 9 个crate (7 直接)

MIT 许可证

99KB
2.5K SLoC

Mavryk数据编码

用于rust结构体的序列化和反序列化辅助工具,以匹配由mavkit使用的Data_encoding库生成的二进制格式。


lib.rs:

此crate为Mavryk shell使用的数据类型提供序列化和反序列化功能。

您可以手动实现 NomReaderBinWriter,或者从它们派生。

示例

让我们为包含两个数组(一个固定大小,一个动态)的结构体创建编码。

泛型结构体支持派生。

use mavryk_data_encoding::nom::NomReader;
use mavryk_data_encoding::enc::BinWriter;
use mavryk_data_encoding::encoding::HasEncoding;

const INNER_SIZE: usize = 10;

#[derive(Debug, PartialEq, HasEncoding, NomReader, BinWriter)]
struct Inner {
  #[encoding(sized = "INNER_SIZE", bytes)]
  fixed_size: Vec<u8>
}

#[derive(Debug, PartialEq, HasEncoding, NomReader, BinWriter)]
struct Outer<T>
where T: Debug + PartialEq + HasEncoding + for<'a> NomReader<'a> + BinWriter {
  #[encoding(dynamic)]
  dynamic_size: Vec<T>
}
#
#
#
#
#

依赖项

~7.5MB
~149K SLoC