#bindings #grpc #protocols #wrapper #zcash #build #lightwalletd

zcash_lightwallet_proto

为Zcash lightwalletd gRPC协议设计的尽可能薄的Rust绑定包装器

2个版本

0.1.1 2022年10月20日
0.1.0 2022年10月20日

#41 in #zcash

自定义许可证

1MB
10K SLoC

Go 10K SLoC // 0.1% comments Shell 89 SLoC // 0.2% comments Rust 43 SLoC Bitbake 4 SLoC

为Zcash lightwalletd gRPC协议设计的尽可能薄的Rust绑定包装器。

状态

⚠️ ⚠ 这是一个概念验证原型,不应在生产中使用。

此存储库是创建Lightwalletd协议的最小模块化Rust绑定包的原型。项目librustzcash可能将直接集成grpc绑定,这将更好地维护并经过未来生产使用的审查,请参阅librustzcash问题#585

此包依赖于protobuf-codegen-pure,根据文档,将很快被protobug-codegen取代。

构建

此包依赖于protobuf-codegen-pure来生成绑定,无需安装除cargo之外的其他构建工具链(即不需要安装protoc)。

因此,标准的cargo build命令应该可以工作。

构建设计

.proto文件直接从lightwalletd导入,作为位于./subtree目录中的git子树。这种设计旨在通过更新子树(而不需要手动复制或编辑.proto文件)来安全地跟踪上游更改。

build.rs脚本使用protobuf-codegen-pure生成Rust模块,并将它们写入$OUT_DIR/generated-source/。此外,为每个生成的Rust模块编写一个container.rs源文件,其中包含.proto生成的Rust模块的pub mod ${MODNAME};

代码文件 lib.rs 直接使用 include!() 引入了 container.rs,这会将每个生成的子模块引入进来。

遗憾的是,在这个当前设计中,API 文档并没有从上游的 .proto 文件生成。一个很好的改进是确保 Rust API 文档能够自动从上游的 .proto API 文档生成。

依赖项