1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2017 年 9 月 27 日 |
---|
#667 在 Cargo 插件 中
11KB
116 行(不含注释)
cargo-plugin,一个用于在编译时处理插件的工具
注意:实验性项目,可能会很快发生变化
该工具帮助您为 Rust 项目构建插件基础设施。该系统的亮点:
- 插件 API 已版本化,因此会检查插件的兼容性
- 它只使用稳定的 Rust 代码
- 您可以使用默认依赖项在 crates.io 上发布您的项目,但允许在本地从源代码构建时覆盖
rust-plugin-test 项目 是该用法的示例。
安装
运行以下命令
cargo install cargo-plugin
如何使用
设置
如果您的项目使用工作区,这将运行得更好
plugin-api
包 定义了插件应实现的 traitcargo-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,然后是插件包,最后是主包。
用法
您的包将使用默认的插件集发布。如果您想构建包含不同插件集的版本,请在 plugins/src
中添加和删除插件文件夹,然后在 plugins/
中运行 cargo plugin
。
cargo-plugin
工具将读取每个插件文件夹中的元数据,然后编辑 Cargo.toml
和 src/lib.rs
来执行以下任务
- 导入每个插件使用的包
- 声明所有插件为子模块
- 生成一个在运行时声明插件的功能
依赖
~6.5MB
~140K SLoC