Come usare la cassa raft-rs e costruire con il carico?
Provo a costruire l' esempio single_mem_node , ma come esempio autonomo e utilizzo il raft-rs
crate come libreria.
Ma sfortunatamente, ottengo questo errore di compilazione durante la compilazione utilizzando 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`
Ho dichiarato queste dipendenze nel mio file 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"
Le istruzioni su come utilizzare la raft-rs
cassa sono:
Puoi usare raft con rust-protobuf o Prost per codificare / decodificare i messaggi gRPC. Usiamo rust-protobuf per impostazione predefinita. Per usare Prost, costruisci (o dipendi da) Raft utilizzando la funzione prost-codec e senza funzionalità predefinite.
Sicuramente sembra che mi manchi qualcosa in giro protobuf
... ma cosa? e come lo scopro?
Risposte
Sembra che il metodo sia stato aggiunto in questo commit , dopo il 0.6.0-alpha
rilascio della versione . GitHub mostra il master
ramo per impostazione predefinita, quindi in futuro prova a navigare nel commit che corrisponde alla versione che stai utilizzando. In questo caso non è etichettato correttamente ma penso che questo commit sia la 0.6.0-alphaversione pubblicata . Nell'esempio in quel commit, la riga corrispondente è:
if !raft::is_empty_snap(ready.snapshot()) {
In alternativa, poiché sembra che sia 0.6.0-alpha
stato rilasciato nel luglio del 2019, se vuoi le ultime modifiche master
, puoi cambiare la dipendenza in Cargo.toml
leggere:
raft = { git = "https://github.com/tikv/raft-rs" }
In tal caso, cargo recupererà l'ultimo commit e memorizzerà il suo hash Cargo.lock
, e potrai aggiornare a un commit più recente con cargo update
.