#messagepack #extension #dynamic #focused #pure #msg-pack

msgpack_simple

简洁、易于使用、专注于处理动态数据结构的纯Rust MessagePack实现

3个稳定版本

1.0.2 2020年8月29日
1.0.0 2019年1月31日

数据结构中排名566

Download history 3420/week @ 2024-04-04 4528/week @ 2024-04-11 4906/week @ 2024-04-18 4543/week @ 2024-04-25 3341/week @ 2024-05-02 2520/week @ 2024-05-09 10670/week @ 2024-05-16 10449/week @ 2024-05-23 4349/week @ 2024-05-30 10583/week @ 2024-06-06 6237/week @ 2024-06-13 6427/week @ 2024-06-20 8589/week @ 2024-06-27 5555/week @ 2024-07-04 3055/week @ 2024-07-11 3460/week @ 2024-07-18

每月下载量22,391
2 crates中使用

MIT许可证

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-msgpack3Hren的RMPcrate,但它能够解析消息,而无需完全了解它们的结构。

有关更多详细信息,请参阅文档

贡献、许可证和其他内容

一如既往,欢迎拉取请求、错误报告、建议和其他类型的改进。只要彼此尊重,也许可以适当运行或创建测试。

msgpack_simple采用MIT许可证。

依赖关系

~145KB