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 中使用

GPL-3.0-only

32KB
764 代码行

IO-Plugin

IO-Plugin是一个Rust包,允许基于以下模型轻松创建插件系统:

  1. 主机通过运行它们的可执行文件启动其插件实例
  2. 主机在插件进程的stdin上发送序列化消息
  3. 主机在插件进程的stdout上接收序列化响应

理论上,也可以在其他语言中创建插件,不过它们的接口将需要手动确定。消息目前使用serde-cbor进行序列化(这可能会根据我的意愿进行更改 - 尽管我预计会坚持使用serde支持格式)。

使用示例在./io-plugins-test下可用

清单

  • 确定将提供的枚举转换为各种相关数据结构的结构。
  • 编写一个将枚举转换为数据结构的宏
  • 属性转发(不仅仅是文档)
  • 创建合理的默认实现(除了插件-trait方法)
  • 支持泛型(仅类型 - 没有生命周期)
  • 允许提供自定义默认实现(例如 - 输出插件编译所针对的接口版本)
  • 提高错误信息的清晰度(可能有某些无效的使用导致错误信息不明确)

依赖项

~3–4.5MB
~85K SLoC