いかだ-rsクレートを使用して貨物で構築する方法は?
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
ます...しかし何ですか?どうすればそれを知ることができますか?
回答
バージョンがリリースされた後、このコミットでメソッドが追加されたよう0.6.0-alpha
です。GitHubはmaster
デフォルトでブランチを表示するので、将来的には、使用しているバージョンに対応するコミットでブラウジングしてみてください。この場合、適切にタグ付けされていませんが、このコミットは公開された0.6.0-alphaバージョンだと思います。そのコミットの例では、対応する行は次のとおりです。
if !raft::is_empty_snap(ready.snapshot()) {
または、0.6.0-alpha
2019年7月にリリースされたようですので、の最新の変更がmaster
必要な場合は、の依存関係を次のように変更できCargo.toml
ます。
raft = { git = "https://github.com/tikv/raft-rs" }
その場合、cargoは最新のコミットをフェッチしてそのハッシュをに格納しCargo.lock
ます。を使用して新しいコミットに更新できますcargo update
。