#dbus #ipc #gvariant #deserialize #derive-deserialize #debugging

zvariant_derive

D-Bus & GVariant 编码与解码

43 个稳定版本

4.2.0 2024年7月19日
4.1.1 2024年5月20日
4.0.2 2024年2月25日
3.15.2 2024年2月25日
2.0.0 2020年5月22日

#16 in #d-bus

Download history 156462/week @ 2024-04-16 161601/week @ 2024-04-23 159052/week @ 2024-04-30 149837/week @ 2024-05-07 158588/week @ 2024-05-14 162165/week @ 2024-05-21 170840/week @ 2024-05-28 160965/week @ 2024-06-04 161943/week @ 2024-06-11 165280/week @ 2024-06-18 180588/week @ 2024-06-25 161256/week @ 2024-07-02 165395/week @ 2024-07-09 164116/week @ 2024-07-16 176175/week @ 2024-07-23 170227/week @ 2024-07-30

706,344 每月下载量
440 个crate中使用 (5 直接使用)

MIT 许可证

68KB
1K SLoC

zvariant_derive

此crate为zvariant提供了 derive 宏辅助工具。为了方便,zvariant crate 会重新导出这些宏,因此您无需直接使用此crate。

状态:稳定。

示例代码

use zvariant::{serialized::Context, to_bytes, Type, LE};
use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Type, PartialEq, Debug)]
struct Struct<'s> {
    field1: u16,
    field2: i64,
    field3: &'s str,
}

assert_eq!(Struct::signature(), "(qxs)");
let s = Struct {
    field1: 42,
    field2: i64::max_value(),
    field3: "hello",
};
let ctxt = Context::new_dbus(LE, 0);
let encoded = to_bytes(ctxt, &s).unwrap();
let decoded: Struct = encoded.deserialize().unwrap().0;
assert_eq!(decoded, s);

依赖

~1.3–2MB
~40K SLoC