#graphql #api-bindings #mapi #gqlmapi

gqlmapi-rs

https://github.com/microsoft/gqlmapi 的Rust绑定

14次重大发布

0.15.0 2023年9月10日
0.13.0 2023年9月1日
0.11.0 2022年5月26日
0.8.0 2022年1月11日
0.6.0 2021年9月3日

157Windows API 中排名

Download history 1/week @ 2024-03-10 94/week @ 2024-03-31 2/week @ 2024-04-07

每月72 次下载

MIT 许可证

430KB
10K SLoC

C++ 8K SLoC // 0.0% comments Rust 1K SLoC GraphQL 471 SLoC

gqlmapi-rs

此crate的C++部分基于 Electron-GqlMAPI。与该项目不同,没有V8引擎或Node互操作/线程要求。但我为该API投影编写了足够多的支持代码和状态管理,因此决定将其用作Rust API投影的基础。

Electron堆栈的下一层是 Electron。此堆栈的下一层是对应的 eMAPI。在堆栈中相应的下一层是一个名为 Tauri GqlMAPITauri 应用程序,它以比 Electron 更轻量级的方式执行相同的功能。

入门

此项目仅在Windows上构建,并且我只测试了x64构建。它要求您已安装 CMakevcpkg,Visual Studio 2022中包含的版本可以正常工作。

您需要设置一个环境变量,以便告诉 build.rs 它的位置,或者在实际构建此crate之前安装用户范围的vcpkg集成。在这个例子中,我的 vcpkg 位于我的用户配置文件下的一个名为 source\repos\microsoft\vcpkg 的子目录中,我针对的是 x64-windows-static,因此我不需要从vcpkg复制任何DLL。

> set VCPKG_ROOT=%USERPROFILE%\source\repos\microsoft\vcpkg

> vcpkg integrate install

build.rs 脚本根据Rust目标确定目标平台 x64-windowsx86-windows,如果您启用了 crt-static 目标功能,它还使用 -static 三联组。 提示:如果您不想与您的应用程序一起重新分发 gqlmapicppgraphqlgen 的DLL,请尝试将其添加到项目的 .cargo/config.toml 文件中:

[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]

确保您也已克隆了 gqlmapi 子模块。如果您没有递归地克隆此存储库,您仍然可以使用几个git命令下载子模块

> git submodule init
> git submodule update

之后,您应该准备好使用 cargo build 进行构建。

依赖项

  • Microsoft Outlook 用于运行时 MAPI 支持
  • gqlmapi 用于将 C++ GraphQL 绑定到 MAPI
  • vcpkg 包管理器用于 GqlMAPI 的 C++ 依赖项
  • cmake crate 用于自动构建 gqlmapi
  • cxx crate 用于生成 C++ 绑定

依赖项

~132MB
~2M SLoC