cosmrs/staking/
query_validators_response.rs

1use crate::base::query::PageResponse;
2use crate::staking::Validator;
3use crate::{proto, ErrorReport, Result};
4
5/// QueryValidatorsResponse is response type for the Query/Validators RPC method
6#[derive(Clone, Debug, PartialEq)]
7pub struct QueryValidatorsResponse {
8    /// validators contains all the queried validators.
9    pub validators: Vec<Validator>,
10
11    /// pagination defines the pagination in the response.
12    pub pagination: Option<PageResponse>,
13}
14
15impl TryFrom<proto::cosmos::staking::v1beta1::QueryValidatorsResponse> for QueryValidatorsResponse {
16    type Error = ErrorReport;
17
18    fn try_from(
19        proto: cosmos_sdk_proto::cosmos::staking::v1beta1::QueryValidatorsResponse,
20    ) -> Result<Self> {
21        Ok(QueryValidatorsResponse {
22            validators: proto
23                .validators
24                .into_iter()
25                .map(TryInto::try_into)
26                .collect::<Result<_>>()?,
27            pagination: proto.pagination.map(Into::into),
28        })
29    }
30}
31
32impl From<QueryValidatorsResponse> for proto::cosmos::staking::v1beta1::QueryValidatorsResponse {
33    fn from(query_validators_response: QueryValidatorsResponse) -> Self {
34        proto::cosmos::staking::v1beta1::QueryValidatorsResponse {
35            validators: query_validators_response
36                .validators
37                .into_iter()
38                .map(Into::into)
39                .collect(),
40            pagination: query_validators_response.pagination.map(Into::into),
41        }
42    }
43}