2个版本
0.1.1 | 2022年10月20日 |
---|---|
0.1.0 | 2022年10月20日 |
#41 in #zcash
1MB
10K 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 文档生成。