いかだ-rsクレートを使用して貨物で構築する方法は?

Aug 21 2020

single_mem_nodeの例を作成しようとしましたが、スタンドアロンの例raft-rsとして、クレートをライブラリとして使用しています。

しかし、残念ながら、を使用してビルドすると、このビルドエラーが発生します cargo build

error[E0599]: no method named `is_empty` found for reference `&raft_proto::protos::eraftpb::Snapshot` in the current scope
   --> src/main.rs:123:26
    |
123 |     if !ready.snapshot().is_empty() {
    |                          ^^^^^^^^ method not found in `&raft_proto::protos::eraftpb::Snapshot`

私はこれらの依存関係を自分で宣言しました Cargo.toml

[dependencies]
protobuf = { version = "2", features = ["with-bytes"] }
raft = "0.6.0-alpha"
slog = "2.5.2"
slog-term = "2.6.0"
slog-async = "2.5.0"

raft-rsクレートの使用方法に関する説明は次のとおりです。

rust-protobufまたはProstのいずれかでraftを使用して、gRPCメッセージをエンコード/デコードできます。デフォルトではrust-protobufを使用します。Prostを使用するには、prost-codec機能を使用し、デフォルト機能を使用せずにRaftをビルド(または依存)します。

それは確かに私が周りの何かを逃しているように見えprotobufます...しかし何ですか?どうすればそれを知ることができますか?

回答

1 Coder-256 Aug 21 2020 at 19:25

バージョンがリリースされた後、このコミットでメソッドが追加されたよう0.6.0-alphaです。GitHubはmasterデフォルトでブランチを表示するので、将来的には、使用しているバージョンに対応するコミットでブラウジングしてみてください。この場合、適切にタグ付けされていませんが、このコミットは公開された0.6.0-alphaバージョンだと思います。そのコミットの例では、対応する行は次のとおりです。

if !raft::is_empty_snap(ready.snapshot()) {

または、0.6.0-alpha2019年7月にリリースされたようですので、の最新の変更がmaster必要な場合は、の依存関係を次のように変更できCargo.tomlます。

raft = { git = "https://github.com/tikv/raft-rs" }

その場合、cargoは最新のコミットをフェッチしてそのハッシュをに格納しCargo.lockます。を使用して新しいコミットに更新できますcargo update