1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017 年 9 月 27 日

#667Cargo 插件

MIT 许可证

11KB
116 行(不含注释)

cargo-plugin,一个用于在编译时处理插件的工具

注意:实验性项目,可能会很快发生变化

该工具帮助您为 Rust 项目构建插件基础设施。该系统的亮点:

  • 插件 API 已版本化,因此会检查插件的兼容性
  • 它只使用稳定的 Rust 代码
  • 您可以使用默认依赖项在 crates.io 上发布您的项目,但允许在本地从源代码构建时覆盖

rust-plugin-test 项目 是该用法的示例。

安装

运行以下命令

cargo install cargo-plugin

如何使用

设置

如果您的项目使用工作区,这将运行得更好

  • plugin-api 定义了插件应实现的 trait
    • cargo-plugin 预期该包公开一个 PluginInformation trait
  • plugins 包含插件
    • Cargo.toml 文件通过版本声明了对 plugin-api 的依赖。该文件将由 cargo-plugin 重新编写
    • metadata.toml 文件 指示插件 API 包的名称
    • 所有插件都是 plugins/src 的子目录
      • 每个插件都有一个 metadata.toml 文件,声明其名称和其依赖项
      • 每个插件,在它的 mod.rs 文件
        • 导入插件 API 包中的 trait
        • 声明了一个实现 PluginInformation 特性的 PLUGIN_METADATA 常量元素
  • main
    • 声明了对 插件API 的依赖
    • 声明了对 插件包 的依赖,通过版本和路径同时声明

现在您可以发布您的包了,首先发布插件API,然后是插件包,最后是主包。

用法

您的包将使用默认的插件集发布。如果您想构建包含不同插件集的版本,请在 plugins/src 中添加和删除插件文件夹,然后在 plugins/ 中运行 cargo plugin

cargo-plugin 工具将读取每个插件文件夹中的元数据,然后编辑 Cargo.tomlsrc/lib.rs 来执行以下任务

  • 导入每个插件使用的包
  • 声明所有插件为子模块
  • 生成一个在运行时声明插件的功能

依赖

~6.5MB
~140K SLoC