¿Cómo usar la caja de balsa-rs y construir con carga?
Intento construir el ejemplo single_mem_node , pero como un ejemplo independiente y uso la raft-rs
caja 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-rs
caja 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
Parece que el método se agregó en esta confirmación , después del 0.6.0-alpha
lanzamiento de la versión . GitHub muestra la master
rama 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-alpha
se lanzó en julio de 2019, si desea que se activen los últimos cambios master
, puede cambiar la dependencia Cargo.toml
para 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
.