Raft-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 코덱 기능을 사용하여 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.lock
, 당신은 새로운 확약을 업데이트 할 수 있습니다 cargo update
.