使用近 json-rpc 和近基元时如何修复"expected enum QueryRequest, found enum QueryRequest"?



我正在尝试使用近json-rpc,当我构建RpcQueryRequest时,我得到了以下与近基元类型相关的错误:

expected enum near_primitives::types::BlockReference, found enum BlockReference
expected enum near_primitives::views::QueryRequest, found enum QueryRequest

将导入BlockReferenceQueryRequest枚举。以下是构建请求的代码:

use near_primitives::types::Finality::DoomSlug;
use near_primitives::types::BlockReference::Finality;
use near_primitives::views::QueryRequest::ViewAccount;
...
let request = ViewAccount {
account_id: "address.near".parse().unwrap()
};
let block_reference = Finality(DoomSlug);
let status_request = RpcQueryRequest {
block_reference,
request
};

使用block_referencerequest变量创建status_request时,在最后3行中生成错误。

以下是我在Cargo.toml:中的依赖项

[dependencies]
near-jsonrpc-client = "0.3.0"
futures = "0.3.24"
tokio = { version = "1.21.1", features = ["full"] }
near-primitives = "0.15.0"

关于如何解决这个问题有什么想法吗?

您使用的是near-primitives版本0.15,但near-jsonrpc客户端版本0.3依赖于near-prinitives版本0.12。这两个版本不兼容,因此使用一个版本的类型来代替另一个版本是不起作用的。

您应该降低对近基元的依赖以匹配:

near-primitives = "0.12.0"

最新更新