13个版本 (4个破坏性更新)
0.6.0 | 2024年1月14日 |
---|---|
0.5.4 | 2024年1月6日 |
0.4.3 | 2024年1月1日 |
0.4.2 | 2023年12月31日 |
0.2.1 | 2023年12月29日 |
#37 in #plugin-system
在 io-plugin 中使用
32KB
764 代码行
IO-Plugin
IO-Plugin是一个Rust包,允许基于以下模型轻松创建插件系统:
- 主机通过运行它们的可执行文件启动其插件实例
- 主机在插件进程的stdin上发送序列化消息
- 主机在插件进程的stdout上接收序列化响应
理论上,也可以在其他语言中创建插件,不过它们的接口将需要手动确定。消息目前使用serde-cbor进行序列化(这可能会根据我的意愿进行更改 - 尽管我预计会坚持使用serde支持格式)。
使用示例在./io-plugins-test下可用
清单
- 确定将提供的枚举转换为各种相关数据结构的结构。
- 编写一个将枚举转换为数据结构的宏
- 属性转发(不仅仅是文档)
- 创建合理的默认实现(除了插件-trait方法)
- 支持泛型(仅类型 - 没有生命周期)
- 允许提供自定义默认实现(例如 - 输出插件编译所针对的接口版本)
- 提高错误信息的清晰度(可能有某些无效的使用导致错误信息不明确)
依赖项
~3–4.5MB
~85K SLoC