pub trait JsonSchema {
    fn schema_name() -> String;
    fn json_schema(gen: &mut SchemaGenerator) -> Schema;

    fn is_referenceable() -> bool { ... }
}
Expand description

A type which can be described as a JSON Schema document.

This is implemented for many Rust primitive and standard library types.

This can also be automatically derived on most custom types with #[derive(JsonSchema)].

Example

use schemars::{schema_for, JsonSchema};

#[derive(JsonSchema)]
struct MyStruct {
    foo: i32,
}

let my_schema = schema_for!(MyStruct);

Required Methods§

source

fn schema_name() -> String

The name of the generated JSON Schema.

This is used as the title for root schemas, and the key within the root’s definitions property for subschemas.

source

fn json_schema(gen: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type.

If the returned schema depends on any referenceable schemas, then this method will add them to the SchemaGenerator’s schema definitions.

This should not return a $ref schema.

Provided Methods§

source

fn is_referenceable() -> bool

Whether JSON Schemas generated for this type should be re-used where possible using the $ref keyword.

For trivial types (such as primitives), this should return false. For more complex types, it should return true. For recursive types, this must return true to prevent infinite cycles when generating schemas.

By default, this returns true.

Implementations on Foreign Types§

source§

impl<T> JsonSchema for [T; 31]where
    T: JsonSchema,

source§

impl JsonSchema for isize

source§

impl<'a, T> JsonSchema for &'a Twhere
    T: JsonSchema + ?Sized,

source§

impl JsonSchema for SocketAddr

source§

impl<T, E> JsonSchema for Result<T, E>where
    T: JsonSchema,
    E: JsonSchema,

source§

impl JsonSchema for AtomicU64

source§

impl<T> JsonSchema for Weak<T>where
    T: JsonSchema + ?Sized,

source§

impl JsonSchema for u32

source§

impl<T> JsonSchema for BinaryHeap<T>where
    T: JsonSchema,

source§

impl<T> JsonSchema for VecDeque<T, Global>where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 21]where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 9]where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 18]where
    T: JsonSchema,

source§

impl JsonSchema for NonZeroU16

source§

impl<T> JsonSchema for [T; 8]where
    T: JsonSchema,

source§

impl JsonSchema for i128

source§

impl<T> JsonSchema for [T; 6]where
    T: JsonSchema,

source§

impl JsonSchema for OsString

source§

impl JsonSchema for NonZeroU8

source§

impl JsonSchema for ()

source§

impl JsonSchema for AtomicI64

source§

impl<K, V, H> JsonSchema for HashMap<K, V, H>where
    V: JsonSchema,

source§

impl<T> JsonSchema for [T; 16]where
    T: JsonSchema,

source§

impl<T> JsonSchema for RefCell<T>where
    T: JsonSchema + ?Sized,

source§

impl JsonSchema for NonZeroUsize

source§

impl JsonSchema for AtomicU32

source§

impl JsonSchema for NonZeroI8

source§

impl JsonSchema for AtomicBool

source§

impl<T0, T1, T2, T3, T4, T5, T6> JsonSchema for (T0, T1, T2, T3, T4, T5, T6)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,

source§

impl<T> JsonSchema for [T; 27]where
    T: JsonSchema,

source§

impl JsonSchema for u16

source§

impl JsonSchema for NonZeroI64

source§

impl JsonSchema for NonZeroI16

source§

impl JsonSchema for OsStr

source§

impl JsonSchema for AtomicI32

source§

impl JsonSchema for Path

source§

impl JsonSchema for CString

source§

impl<T0> JsonSchema for (T0,)where
    T0: JsonSchema,

source§

impl JsonSchema for i16

source§

impl JsonSchema for NonZeroI32

source§

impl<T> JsonSchema for [T; 17]where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 2]where
    T: JsonSchema,

source§

impl JsonSchema for Number

source§

impl JsonSchema for u64

source§

impl<T> JsonSchema for Range<T>where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 23]where
    T: JsonSchema,

source§

impl JsonSchema for str

source§

impl<T> JsonSchema for [T; 11]where
    T: JsonSchema,

source§

impl JsonSchema for AtomicIsize

source§

impl<T> JsonSchema for [T; 15]where
    T: JsonSchema,

source§

impl<T> JsonSchema for Wrapping<T>where
    T: JsonSchema,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,
    T8: JsonSchema,
    T9: JsonSchema,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,
    T8: JsonSchema,
    T9: JsonSchema,
    T10: JsonSchema,
    T11: JsonSchema,
    T12: JsonSchema,
    T13: JsonSchema,

source§

impl<T> JsonSchema for [T; 30]where
    T: JsonSchema,

source§

impl JsonSchema for AtomicI16

source§

impl JsonSchema for CStr

source§

impl JsonSchema for f32

source§

impl<T> JsonSchema for [T; 29]where
    T: JsonSchema,

source§

impl JsonSchema for String

source§

impl JsonSchema for Value

source§

impl<T> JsonSchema for LinkedList<T>where
    T: JsonSchema,

source§

impl JsonSchema for Duration

source§

impl JsonSchema for AtomicU16

source§

impl JsonSchema for SocketAddrV6

source§

impl<T0, T1> JsonSchema for (T0, T1)where
    T0: JsonSchema,
    T1: JsonSchema,

source§

impl<'a, T> JsonSchema for Cow<'a, T>where
    T: ToOwned + JsonSchema + ?Sized,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,
    T8: JsonSchema,
    T9: JsonSchema,
    T10: JsonSchema,

source§

impl JsonSchema for PathBuf

source§

impl<T> JsonSchema for RangeInclusive<T>where
    T: JsonSchema,

source§

impl JsonSchema for AtomicU8

source§

impl<T> JsonSchema for [T; 26]where
    T: JsonSchema,

source§

impl JsonSchema for SocketAddrV4

source§

impl<T> JsonSchema for Reverse<T>where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 12]where
    T: JsonSchema,

source§

impl JsonSchema for char

source§

impl<T> JsonSchema for [T; 7]where
    T: JsonSchema,

source§

impl<T> JsonSchema for Mutex<T>where
    T: JsonSchema + ?Sized,

source§

impl<T> JsonSchema for [T; 20]where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 25]where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 4]where
    T: JsonSchema,

source§

impl JsonSchema for NonZeroIsize

source§

impl<T0, T1, T2, T3, T4, T5> JsonSchema for (T0, T1, T2, T3, T4, T5)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,

source§

impl JsonSchema for u8

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,
    T8: JsonSchema,
    T9: JsonSchema,
    T10: JsonSchema,
    T11: JsonSchema,
    T12: JsonSchema,
    T13: JsonSchema,
    T14: JsonSchema,

source§

impl<T> JsonSchema for Bound<T>where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 19]where
    T: JsonSchema,

source§

impl JsonSchema for bool

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,
    T8: JsonSchema,
    T9: JsonSchema,
    T10: JsonSchema,
    T11: JsonSchema,

source§

impl<T> JsonSchema for BTreeSet<T, Global>where
    T: JsonSchema,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,

source§

impl JsonSchema for u128

source§

impl JsonSchema for AtomicUsize

source§

impl<T> JsonSchema for [T; 13]where
    T: JsonSchema,

source§

impl<T> JsonSchema for Option<T>where
    T: JsonSchema,

source§

impl<T> JsonSchema for Arc<T>where
    T: JsonSchema + ?Sized,

source§

impl JsonSchema for NonZeroU128

source§

impl<T0, T1, T2> JsonSchema for (T0, T1, T2)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,

source§

impl JsonSchema for NonZeroI128

source§

impl<T0, T1, T2, T3> JsonSchema for (T0, T1, T2, T3)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,

source§

impl JsonSchema for i64

source§

impl<T> JsonSchema for [T]where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 32]where
    T: JsonSchema,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,
    T8: JsonSchema,

source§

impl JsonSchema for Ipv4Addr

source§

impl<T> JsonSchema for Cell<T>where
    T: JsonSchema + ?Sized,

source§

impl JsonSchema for AtomicI8

source§

impl<T> JsonSchema for Weak<T>where
    T: JsonSchema + ?Sized,

source§

impl JsonSchema for Map<String, Value>

source§

impl JsonSchema for SystemTime

source§

impl JsonSchema for Ipv6Addr

source§

impl JsonSchema for i32

source§

impl<T> JsonSchema for [T; 24]where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 5]where
    T: JsonSchema,

source§

impl<'a> JsonSchema for Arguments<'a>

source§

impl<T> JsonSchema for Rc<T>where
    T: JsonSchema + ?Sized,

source§

impl<T0, T1, T2, T3, T4> JsonSchema for (T0, T1, T2, T3, T4)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,

source§

impl<T> JsonSchema for Vec<T, Global>where
    T: JsonSchema,

source§

impl JsonSchema for i8

source§

impl JsonSchema for f64

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,
    T8: JsonSchema,
    T9: JsonSchema,
    T10: JsonSchema,
    T11: JsonSchema,
    T12: JsonSchema,

source§

impl<T> JsonSchema for [T; 0]

source§

impl<T> JsonSchema for [T; 10]where
    T: JsonSchema,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
    T0: JsonSchema,
    T1: JsonSchema,
    T2: JsonSchema,
    T3: JsonSchema,
    T4: JsonSchema,
    T5: JsonSchema,
    T6: JsonSchema,
    T7: JsonSchema,
    T8: JsonSchema,
    T9: JsonSchema,
    T10: JsonSchema,
    T11: JsonSchema,
    T12: JsonSchema,
    T13: JsonSchema,
    T14: JsonSchema,
    T15: JsonSchema,

source§

impl JsonSchema for NonZeroU64

source§

impl<T> JsonSchema for [T; 3]where
    T: JsonSchema,

source§

impl<K, V> JsonSchema for BTreeMap<K, V, Global>where
    V: JsonSchema,

source§

impl JsonSchema for usize

source§

impl<'a, T> JsonSchema for &'a mut Twhere
    T: JsonSchema + ?Sized,

source§

impl<T> JsonSchema for Box<T, Global>where
    T: JsonSchema + ?Sized,

source§

impl<T> JsonSchema for [T; 28]where
    T: JsonSchema,

source§

impl<T> JsonSchema for [T; 22]where
    T: JsonSchema,

source§

impl JsonSchema for IpAddr

source§

impl<T> JsonSchema for PhantomData<T>where
    T: ?Sized,

source§

impl<T> JsonSchema for [T; 1]where
    T: JsonSchema,

source§

impl<T> JsonSchema for RwLock<T>where
    T: JsonSchema + ?Sized,

source§

impl<T> JsonSchema for [T; 14]where
    T: JsonSchema,

source§

impl<T, H> JsonSchema for HashSet<T, H>where
    T: JsonSchema,

source§

impl JsonSchema for NonZeroU32

Implementors§

source§

impl JsonSchema for fadroma::admin::simple::ExecuteMsg

source§

impl JsonSchema for fadroma::admin::simple::QueryMsg

source§

impl JsonSchema for fadroma::admin::two_step::ExecuteMsg

source§

impl JsonSchema for fadroma::admin::two_step::QueryMsg

source§

impl JsonSchema for fadroma::killswitch::ContractStatusLevel

source§

impl JsonSchema for fadroma::killswitch::ExecuteMsg

source§

impl JsonSchema for fadroma::killswitch::QueryMsg

source§

impl JsonSchema for fadroma::scrt::snip20::client::msg::ContractStatusLevel

source§

impl JsonSchema for ExecuteAnswer

source§

impl JsonSchema for fadroma::scrt::snip20::client::msg::ExecuteMsg

source§

impl JsonSchema for QueryAnswer

source§

impl JsonSchema for fadroma::scrt::snip20::client::msg::QueryMsg

source§

impl JsonSchema for QueryPermission

source§

impl JsonSchema for QueryWithPermit

source§

impl JsonSchema for ResponseStatus

source§

impl JsonSchema for TxAction

source§

impl JsonSchema for AuthExecuteAnswer

source§

impl JsonSchema for AuthResponseStatus

source§

impl JsonSchema for fadroma::scrt::vk::auth::ExecuteMsg

source§

impl JsonSchema for fadroma::scrt::vk::auth::QueryMsg

source§

impl JsonSchema for BankMsg

source§

impl JsonSchema for BankQuery

source§

impl JsonSchema for DistributionMsg

source§

impl JsonSchema for ReplyOn

source§

impl JsonSchema for StakingMsg

source§

impl JsonSchema for StakingQuery

source§

impl JsonSchema for SubMsgResult

source§

impl JsonSchema for SystemError

source§

impl JsonSchema for WasmMsg

source§

impl JsonSchema for WasmQuery

source§

impl JsonSchema for ContractInstantiationInfo

source§

impl JsonSchema for MockEnv

source§

impl JsonSchema for BurnFromAction

source§

impl JsonSchema for CreateViewingKeyResponse

source§

impl JsonSchema for MintAction

source§

impl JsonSchema for RichTx

source§

impl JsonSchema for SendAction

source§

impl JsonSchema for SendFromAction

source§

impl JsonSchema for TokenInfo

source§

impl JsonSchema for TransferAction

source§

impl JsonSchema for TransferFromAction

source§

impl JsonSchema for InitConfig

source§

impl JsonSchema for InitialAllowance

source§

impl JsonSchema for InitialBalance

source§

impl JsonSchema for InstantiateMsg

source§

impl JsonSchema for Snip20ReceiveMsg

source§

impl JsonSchema for Allowance

source§

impl JsonSchema for Constants

source§

impl JsonSchema for ViewingKey

source§

impl JsonSchema for ViewingKeyHashed

source§

impl JsonSchema for Addr

source§

impl JsonSchema for AllBalanceResponse

source§

impl JsonSchema for AllDelegationsResponse

source§

impl JsonSchema for AllValidatorsResponse

source§

impl JsonSchema for Attribute

source§

impl JsonSchema for BalanceResponse

source§

impl JsonSchema for Binary

source§

impl JsonSchema for BlockInfo

source§

impl JsonSchema for BondedDenomResponse

source§

impl JsonSchema for CanonicalAddr

source§

impl JsonSchema for Coin

source§

impl JsonSchema for ContractInfoResponse

source§

impl JsonSchema for Decimal256

source§

impl JsonSchema for Decimal

source§

impl JsonSchema for Delegation

source§

impl JsonSchema for DelegationResponse

source§

impl JsonSchema for Empty

source§

impl JsonSchema for Event

source§

impl JsonSchema for FullDelegation

source§

impl JsonSchema for Reply

source§

impl JsonSchema for SubMsgResponse

source§

impl JsonSchema for Timestamp

source§

impl JsonSchema for Uint64

source§

impl JsonSchema for Uint128

source§

impl JsonSchema for Uint256

source§

impl JsonSchema for Uint512

source§

impl JsonSchema for Validator

source§

impl JsonSchema for ValidatorResponse

source§

impl<A: JsonSchema> JsonSchema for Callback<A>

source§

impl<A: JsonSchema> JsonSchema for ContractLink<A>

source§

impl<A: JsonSchema> JsonSchema for ContractStatus<A>

source§

impl<C> JsonSchema for QueryRequest<C>where
    C: JsonSchema,

source§

impl<P: Permission + JsonSchema> JsonSchema for Permit<P>

source§

impl<P: Permission + JsonSchema> JsonSchema for PermitParams<P>

source§

impl<S> JsonSchema for ContractResult<S>where
    S: JsonSchema,

source§

impl<S> JsonSchema for SystemResult<S>where
    S: JsonSchema,

source§

impl<T> JsonSchema for CosmosMsg<T>where
    T: JsonSchema,

source§

impl<T> JsonSchema for Response<T>where
    T: JsonSchema,

source§

impl<T> JsonSchema for SubMsg<T>where
    T: JsonSchema,

source§

impl<T: JsonSchema> JsonSchema for Tx<T>