1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2016年11月11日 |
---|
#61 in #erlang
43KB
1.5K SLoC
bert-rs
BERT (二进制ERlang术语)序列化器
这个crate提供了一种将数据序列化为特殊二进制数据格式的方法,该格式可以被发送到您的Erlang程序中。实现依赖于BERT和Erlang外部术语格式规范。
依赖项
[dependencies]
serde = "0.8.7"
num = "0.1.34"
byteorder = "0.5.3"
[dev-dependencies]
serde_macros = "0.8.*"
使用
在您开始使用此库之前,您需要在Cargo.toml文件中添加对bert-rs库的链接
[dependencies]
bert = "0.1.0"
许可协议
bert-rs在BSD许可协议下发布。有关更多详细信息,请阅读LICENSE文件。
使用示例
bert-rs crate提供了对默认Rust类型和一些BERT文档中指定的附加类型的支持。对于任何需要序列化的支持数据类型,您需要将其传递给term_to_binary
函数。
#![feature(proc_macro)]
extern crate bert;
extern crate serde;
#[derive(Debug, PartialEq, Serialize)]
struct Point2D(i32, i32);
fn main() {
let point = Point2D(1, 2);
// serialized to {point2d, 1, 2} in BERT format
let serialized_point_2d = bert::term_to_binary(&point).unwrap();
assert_eq!(
serialized_point_2d
vec![
131u8,
105, // tuple
0, 0, 0, 3, // length
100, 0, 7, 112, 111, 105, 110, 116, 50, 100, // "point2d" as atom
98, 0, 0, 0, 1, // 1
98, 0, 0, 0, 2 // 2
]
);
}
注意:目前bert-rs只提供序列化功能。但bert-rs有serder-rs-deserializer
分支,其中这个库提供了反序列化功能。部分必需功能尚未实现(因为反序列化方法过于复杂):列表、元组、BertBigInteger
和特殊类型的元组,这些元组以{bert, ...}
的形式表示。如果您想进一步帮助开发,请随时提出pull请求和issue。
用于开发
- rustup工具链
- 稳定版
rustc 1.11.0 (9b21dcd6a 2016-08-15)
用于构建发布版本 - 不稳定版
rustc 1.13.0-nightly (3c5a0fa45 2016-08-22)
用于测试
依赖项
~1MB
~17K SLoC