¿Cómo usar la caja de balsa-rs y construir con carga?

Aug 21 2020

Intento construir el ejemplo single_mem_node , pero como un ejemplo independiente y uso la raft-rscaja como biblioteca.

Pero, desafortunadamente, obtengo este error de compilación al 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`

He declarado estas dependencias en mi 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"

Las instrucciones sobre cómo usar la raft-rscaja son:

Puede usar raft con rust-protobuf o Prost para codificar / decodificar mensajes gRPC. Usamos rust-protobuf por defecto. Para usar Prost, construya (o dependa de) Raft usando la función prost-codec y sin las funciones predeterminadas.

Ciertamente parece que me pierdo algo alrededor del protobuf... pero ¿qué? y como lo averiguo?

Respuestas

1 Coder-256 Aug 21 2020 at 19:25

Parece que el método se agregó en esta confirmación , después del 0.6.0-alphalanzamiento de la versión . GitHub muestra la masterrama de forma predeterminada, por lo que en el futuro, intente buscar en la confirmación que corresponda a la versión que está utilizando. En este caso, no está etiquetado correctamente, pero creo que esta confirmación es la 0.6.0-alphaversión publicada . En el ejemplo de esa confirmación, la línea correspondiente es:

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

Alternativamente, dado que parece que 0.6.0-alphase lanzó en julio de 2019, si desea que se activen los últimos cambios master, puede cambiar la dependencia Cargo.tomlpara leer:

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

En ese caso, cargo obtendrá la última confirmación y almacenará su hash Cargo.lock, y podrá actualizar a una confirmación más reciente con cargo update.