pub trait QueryResponses: JsonSchema {
// Required methods
fn response_schemas() -> BTreeMap<String, RootSchema>;
fn response_schemas_cw() -> BTreeMap<String, Schema>;
}
Expand description
A trait for tying QueryMsg variants (different contract queries) to their response types.
This is mostly useful for the generated contracted API description when using cargo schema
.
Using the derive macro is the preferred way of implementing this trait.
§Examples
use cosmwasm_schema::QueryResponses;
use cw_schema::Schemaifier;
use schemars::JsonSchema;
#[derive(JsonSchema, Schemaifier)]
struct AccountInfo {
IcqHandle: String,
}
#[derive(JsonSchema, Schemaifier, QueryResponses)]
enum QueryMsg {
#[returns(Vec<String>)]
Denoms {},
#[returns(AccountInfo)]
AccountInfo { account: String },
}
You can compose multiple queries using #[query_responses(nested)]
. This might be useful
together with #[serde(untagged)]
. If the nested
flag is set, no returns
attributes
are necessary on the enum variants. Instead, the response types are collected from the
nested enums.
#[derive(JsonSchema, Schemaifier, QueryResponses)]
#[query_responses(nested)]
#[serde(untagged)]
enum QueryMsg {
MsgA(QueryA),
MsgB(QueryB),
}
#[derive(JsonSchema, Schemaifier, QueryResponses)]
enum QueryA {
#[returns(Vec<String>)]
Denoms {},
}
#[derive(JsonSchema, Schemaifier, QueryResponses)]
enum QueryB {
#[returns(AccountInfo)]
AccountInfo { account: String },
}
Required Methods§
fn response_schemas() -> BTreeMap<String, RootSchema>
fn response_schemas_cw() -> BTreeMap<String, Schema>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.