1个不稳定版本
0.1.0 | 2019年2月11日 |
---|
#84 在 #across
13KB
176 行
Ability
Ability(简称ABI兼容性)提供用于定义跨编译器版本具有兼容ABI的特质的宏。
短期内,这允许为以共享库形式分发的应用程序扩展定义接口。长期来看,应支持更复杂的数据类型(也许还有泛型?)。
欢迎贡献
用法
[dependencies]
ability = { git = "https://github.com/m-hilgendorf/ability.git"}
要将属性添加到您的库中的特质,只需将 #[interface]
属性添加到您的特质定义中。
use ability::interface;
#[interface]
pub trait MyTrait {
fn foo(&self);
}
实现二进制接口
限制
目前,支持POD/C类型的传递(指针、整数、浮点数、标记为 #[repr(C)]
的结构体等)。
如果您需要传递更复杂的数据,请将其序列化并作为指针 + 长度传递。
路线图
- 文档/示例
- 无效特质的错误消息/失败
- 限制的明确描述
- 支持泛型?
- 支持可序列化类型?
- C头文件代码生成
- 为加载特质的二进制文件提供更简单、更安全的API
依赖项
~2MB
~46K SLoC