6 个版本
使用旧的 Rust 2015
0.0.6 | 2018年12月27日 |
---|---|
0.0.5 | 2018年11月25日 |
0.0.3 | 2018年10月14日 |
0.0.1 | 2018年9月29日 |
#45 in #qt
4.5MB
86K SLoC
Rute
Rute 是一个基于 Qt 的 Rust UI 库。已经有了几个这样的项目,如 rust-qt 和 qmlrs,那么 Rute 与它们有什么不同呢?
概览
Rute 在 API 生成方面采取了与其他不同的方法。
- 不是解析 C++ 头文件或手动完成所有操作,而是使用了一个 API 描述文件。
- 作为中间步骤生成 C API,但也可以从纯 C 代码中使用。
- 所有需要用于 C 绑定的 C++ 生成代码(可选)生成到一个共享对象(dll/dylib/so),Rust/C API 可以使用这个对象。
- 只暴露一个包含函数指针的符号。这使得它非常适合在应用程序使用的共享对象之间传递这个结构。
- 这也允许主机应用程序使用插件(共享对象)并仅传递一个指向整个 UI 接口的指针。
详细信息
有关如何工作的详细信息,请参阅 此处(WIP 和有些过时)
状态
Rute 目前处于早期开发阶段,除了一些 基本示例外,实际上不可用。
优点
- 不需要用户构建所有绑定,而一些其他生成器则要求这样做。
- 跨平台。无需为每个平台生成特定的绑定。
- 可以保持所有 C++ 生成代码在单个共享对象中。Rust 或 C 程序无需与任何 C++ 代码链接。
- 这种分离允许主机程序以非常低廉的成本(单个指针)加载 dll 并传递接口。
- 分离还允许插件(共享对象)使用此功能而不直接与 Qt 链接,从而使它们对 Qt 版本无感知。
- 槽和信号以及虚拟重写可以直接从 Rust/C 使用,并且可以直接设置在对象上。
- 无需代码生成即可绑定到槽/信号,就像 Qt C++ 中的那样。
- 提供了比常规 C++ API 更安全的 API。
缺点
- 信号和槽不能像在 C++ 中那样轻松定义,并且只存在于 API 中定义的。
- 目前处于非常 WIP 状态。存在(已知)内存泄漏,需要修复。
- 添加的层会影响性能。实际影响有多大需要测试。
源代码许可
许可方式为以下之一:
- Apache 许可证 2.0 版(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT)
任选其一。
文档许可
Qt 文档采用 GNU 自由文档许可协议版本 1.3 许可,因此 Rute 的文档也采用相同的许可。
Qt 许可证
请记住,如果您计划发布使用 Rute 的应用程序,您将还需要使用 Qt 许可证,相关信息请参阅这里
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交给作品包含在内的任何贡献,将以上述方式双许可,不附加任何额外条款或条件。