#interface #traits #across #version #abi #compiler #macro

ability

用于在编译器版本间创建具有兼容ABI接口的特质的宏

1个不稳定版本

0.1.0 2019年2月11日

#84#across

MIT 许可证

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