Diplomat革命性Rust FFI工具轻松生成多语言绑定的完整指南【免费下载链接】diplomatRust tool for generating FFI definitions allowing many other languages to call Rust code项目地址: https://gitcode.com/gh_mirrors/dipl/diplomatDiplomat是一款革命性的Rust FFI工具能够自动生成多种语言的绑定让其他语言轻松调用Rust代码。通过Diplomat开发者只需定义要通过FFI公开的Rust API就能自动获得高级别的C、C和JavaScript绑定 什么是DiplomatDiplomat是一个用于从可扩展语言集中生成Rust库绑定的框架和工具。它专注于单向绑定当外部代码希望调用Rust库时Diplomat能提供完美支持。如果你正在寻找双向绑定工具像cxx这样的工具可能更适合你。Diplomat由一个过程宏和一个工具组成。过程宏能够围绕标记的Rust代码生成extern C绑定层而该工具能够生成相应的C、C、JS等语言的绑定这些绑定在理念上与Rust端的API相匹配。这意味着Rust中的方法会映射到目标语言中的方法Rust中的Result会映射到C中的标记联合和Javascript中的异常等。所有这些都通过生成的C API工作但它们保留了C无法表达的更高级别的API特性。 支持的后端Diplomat目前支持以下后端CCJavaScript/TypeScript (使用WASM)demo_genDart.NET (C#)Kotlin (使用JNA)Python via Nanobind (由Zeromatter维护)还有一个[Java后端]使用Panama正在开发中。 Diplomat的实际应用展示下面是一个使用Diplomat生成的Web演示界面展示了如何通过生成的绑定在前端调用Rust代码实现简单的加法功能 快速安装与配置步骤安装Diplomat CLI工具要安装diplomatCLI工具只需运行以下命令$ cargo install diplomat-tool假设这会安装diplomat-tool 0.10.0版本。添加Diplomat依赖然后你可以像这样将diplomat添加到你的项目依赖中diplomat 0.10.0 diplomat-runtime 0.10.0建议为FFI接口创建一个单独的crate。Diplomat只会读取特殊标记模块的内容因此可以将Diplomat代码与普通Rust代码混合使用但最好尽量减少这种情况因为过程宏可能会使调试变得困难。 Diplomat的设计理念Diplomat不进行跨 crate 全局分析它将视图限制在特别标记的模块上并且仅基于在这些模块中找到的信息生成绑定。这意味着更改某个依赖项中的某些结构不会神奇地影响生成的C/JS等API所有此类更改只能来自对这些标记模块的有意更改。这也意味着Diplomat可以清晰地定义用于声明导出API的Rust子集而不会影响依赖项中使用的Rust风格。可以将#[diplomat::bridge]块想象成一种DSL用于在Rust API和更通用的API形状之间架起桥梁这些API形状可以跨语言干净地转换。Diplomat的设计使得为Diplomat编写新的语言目标不需要花费大量精力。️ Diplomat的安全性总体而言Diplomat旨在提供安全的FFI。但是关于Diplomat当前的安全状态有一些注意事项详细信息可以查看安全文档。 为什么选择Diplomat多语言支持一次性编写Rust代码自动生成多种语言的绑定高级API特性保留Rust的高级API特性如Result类型在不同语言中的自然映射安全性专注于提供安全的FFI交互易于扩展添加新的语言后端相对简单最小侵入性不会影响依赖项中使用的Rust风格如果你正在开发需要与其他语言交互的Rust库Diplomat绝对是一个值得尝试的工具通过它你可以轻松地将Rust的强大功能带到各种编程语言生态系统中。【免费下载链接】diplomatRust tool for generating FFI definitions allowing many other languages to call Rust code项目地址: https://gitcode.com/gh_mirrors/dipl/diplomat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考