11 次重大版本发布
0.16.0 | 2022 年 12 月 31 日 |
---|---|
0.15.0 | 2022 年 7 月 5 日 |
0.14.0 | 2021 年 12 月 10 日 |
0.13.0 |
|
0.5.0 | 2019 年 4 月 21 日 |
在 解析器实现 中排名 #2171
每月 393 次下载
在 13 个crate 中使用(4 个直接使用)
29KB
733 代码行
i3ipc-types
该crate包含与i3ipc交互的所有类型,以及通过浏览 i3 源代码发现的某些未记录属性。它还包含一些基本的 sway 支持,尽管我个人不使用 sway,所以我依赖于PR来维护此功能。
该crate包含所有 i3 ipc 消息响应、事件类型以及使用 serde
的序列化和反序列化实现的定义。此外,我还包含了对编码和解码 i3 的 ipc 协议的 trait 的默认实现,只要类型实现了 io::Read
和 io::Write
。
我的目标是把 i3 的 IPC 实现的所有类型定义都放在这里,这样就没有人再需要忍受这个过程了。如果缺少任何内容或出现问题,请填写问题报告或提交PR,我会很高兴以任何方式修复问题或改进库。
功能
默认情况下,此 crate 将包含用于同步 IO 的功能。使用 std
的 io::Read + io::Write
如果启用了 async-traits
,则将为任何实现 tokio 的 AsyncRead + AsyncWrite
的 trait 实现 I3Protocol
与 i3ipc-rs 相比的优势
i3ipc-rs
将事件响应打包到一个枚举中,如果您打算接收除工作区和窗口之外的事件响应,这将是浪费的,因为类型定义中没有间接引用。Rust 枚举的内存布局使得每个变体的大小最多与最大的变体相同,这意味着像 OutputData
这样字段相对较少的响应将占用与 WindowData
相同的空间。在这个包中,情况并非如此。对于 WorkspaceData
和 WindowData
有一个间接引用层,以确保最小变体的大小保持较小。
依赖项
~0.7–12MB
~138K SLoC