Como usar a caixa do raft-rs e construir com carga?
Tento construir o exemplo single_mem_node , mas como um exemplo autônomo e uso a raft-rscaixa como uma biblioteca.
Mas, infelizmente, recebo este erro de compilação, ao compilar usando 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`
Eu declarei essas dependências em meu 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"
As instruções sobre como usar a raft-rscaixa são:
Você pode usar raft com rust-protobuf ou Prost para codificar / decodificar mensagens gRPC. Usamos rust-protobuf por padrão. Para usar o Prost, construa (ou dependa do) Raft usando o recurso prost-codec e sem recursos padrão.
Certamente parece que sinto falta de algo em torno do protobuf... mas o quê? e como faço para descobrir sobre isso?
Respostas
Parece que o método foi adicionado neste commit , após o 0.6.0-alphalançamento da versão . O GitHub mostra o masterbranch por padrão, então, no futuro, tente navegar no commit que corresponde à versão que você está usando. Nesse caso não está marcado corretamente, mas acho que este commit é a 0.6.0-alphaversão publicada . No exemplo desse commit, a linha correspondente é:
if !raft::is_empty_snap(ready.snapshot()) {
Como alternativa, como parece que 0.6.0-alphafoi lançado em julho de 2019, se você quiser as alterações mais recentes master, pode alterar a dependência em Cargo.tomlpara ler:
raft = { git = "https://github.com/tikv/raft-rs" }
Nesse caso, cargo irá buscar o commit mais recente e armazenar seu hash Cargo.lock, e você pode atualizar para um commit mais recente com cargo update.