6个版本
0.1.6 | 2023年6月23日 |
---|---|
0.1.5 | 2023年6月19日 |
0.1.4 | 2022年5月11日 |
0.1.1 | 2022年1月26日 |
#725 in 编码
每月下载量:47
93KB
2.5K SLoC
Serde DBUS
这个crate是全新编写的,目前正处于“开发中”阶段,是一个正在进行中的项目。它还不支持DBus的所有功能。请在使用前进行彻底测试,并且请随时提交错误报告或MR。
这个crate的目标是为DBus消息格式提供Serde支持。实际上发送消息不在本crate的范围内。这个crate可以与更完整的消息系统(如zbus
)一起使用,作为其捆绑的zvariant
serde
实现的替代品。明确来说,这是一个为DBus格式全新实现的Serde,而不是zvariant
的分支。
这个crate与zvariant
的主要区别在于,这个crate旨在支持将Rust结构体序列化为DBus结构体(例如,具有像(iis)
这样的签名)或DBus字典(具有a{sv}
的签名)作为等价的一级选项。 zvariant
使用具有特殊名称的特殊结构体来完成此操作,但serde_dbus
可以通过配置整体默认值(例如,所有具有命名字段的struct成为dict,而所有元组struct成为struct)或基于每个情况的配置列表来配置。
这意味着可以使用相同的Serialize
实例创建DBus字典和JSON字典,这是zvariant
中存在的问题,而这个crate正是为了解决这个问题而存在的。
作为重新实现的一个副作用,与zvariant
中那样作为带外数据传递整个结构的签名不同,这个crate要求使用SerializerPolicy
来提供必要的外带数据。由于serde
的限制,特别是这个bug,serde
不会修复,使用SerializerPolicy
将是必要的,以提供数组的项签名(否则它们将默认使用变体并成为av
)。
截至目前,这尚未实现,因此目前只支持av
签名。这是一个已知问题,将在未来的版本中解决。
反序列化器在任何情况下都不需要任何带外信息。
迄今为止,性能尚未成为主要考虑因素,而是首先实现一个可用的版本,然后后续再解决性能问题。
序列化将只支持小端,但反序列化将必须支持两种端序。
依赖项
~3-16MB
~193K SLoC