3个稳定版本
1.0.2 | 2020年8月29日 |
---|---|
1.0.0 | 2019年1月31日 |
在数据结构中排名566
每月下载量22,391
在 2 crates中使用
55KB
778 行
简洁、易于使用、专注于处理动态数据结构的纯Rust MessagePack实现。
示例用法
use msgpack_simple::{MsgPack, MapElement, Extension};
let message = MsgPack::Map(vec![
MapElement {
key: MsgPack::String(String::from("hello")),
value: MsgPack::Int(42)
},
MapElement {
key: MsgPack::String(String::from("world")),
value: MsgPack::Array(vec![
MsgPack::Boolean(true),
MsgPack::Nil,
MsgPack::Binary(vec![0x42, 0xff]),
MsgPack::Extension(Extension {
type_id: 2,
value: vec![0x32, 0x4a, 0x67, 0x11]
})
])
}
]);
let encoded = message.encode(); // encoded is a Vec<u8>
let decoded = MsgPack::parse(&encoded).unwrap();
println!("{}", decoded);
assert_eq!(message, decoded);
assert!(message.is_map());
let mut map = message.as_map().unwrap(); // map is a Vec<MapElement>
let second_element = map.remove(1);
assert!(second_element.key.is_string());
assert_eq!(second_element.key.as_string().unwrap(), "world".to_string());
assert!(second_element.value.is_array());
let mut array = second_element.value.as_array().unwrap(); // array is a Vec<MsgPack>
let nil = array.remove(1);
assert!(nil.is_nil());
此库将MessagePack数据抽象为单个MsgPack枚举,它可以对应任何可编码的数据类型并动态处理嵌套数据结构。它的性能不如静态解决方案,因此推荐使用mneumann的rust-msgpack和3Hren的RMPcrate,但它能够解析消息,而无需完全了解它们的结构。
有关更多详细信息,请参阅文档。
贡献、许可证和其他内容
一如既往,欢迎拉取请求、错误报告、建议和其他类型的改进。只要彼此尊重,也许可以适当运行或创建测试。
msgpack_simple采用MIT许可证。
依赖关系
~145KB