Trait schemars::JsonSchema

source ·
pub trait JsonSchema {
    // Required methods
    fn schema_name() -> String;
    fn json_schema(gen: &mut SchemaGenerator) -> Schema;

    // Provided method
    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 JsonSchema for SocketAddr

source§

impl JsonSchema for CString

source§

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

source§

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

source§

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

source§

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

source§

impl JsonSchema for NonZeroU16

source§

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

source§

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

source§

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

source§

impl JsonSchema for Decimal

source§

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

source§

impl JsonSchema for Bytes

source§

impl JsonSchema for IpAddr

source§

impl JsonSchema for Map<String, Value>

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

impl JsonSchema for i32

source§

impl<K, V: JsonSchema, H> JsonSchema for IndexMap<K, V, H>

source§

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

source§

impl<A: Array> JsonSchema for SmallVec<A>where A::Item: JsonSchema,

source§

impl JsonSchema for BytesMut

source§

impl JsonSchema for isize

source§

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

source§

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

source§

impl JsonSchema for Weekday

source§

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

source§

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

source§

impl JsonSchema for NonZeroI64

source§

impl JsonSchema for SocketAddrV4

source§

impl JsonSchema for NonZeroU128

source§

impl<L: JsonSchema, R: JsonSchema> JsonSchema for Either<L, R>

source§

impl JsonSchema for Duration

source§

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

source§

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

source§

impl JsonSchema for u128

source§

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

source§

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

source§

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

source§

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

source§

impl JsonSchema for Uuid

source§

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

source§

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

source§

impl<T> JsonSchema for [T; 0]

source§

impl JsonSchema for NaiveTime

source§

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

source§

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

source§

impl JsonSchema for i128

source§

impl JsonSchema for PathBuf

source§

impl JsonSchema for NonZeroIsize

source§

impl JsonSchema for usize

source§

impl JsonSchema for OsString

source§

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

source§

impl JsonSchema for ()

source§

impl JsonSchema for AtomicU8

source§

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

source§

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

source§

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

source§

impl JsonSchema for Version

source§

impl JsonSchema for i8

source§

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

source§

impl JsonSchema for AtomicU16

source§

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

source§

impl JsonSchema for char

source§

impl JsonSchema for AtomicI8

source§

impl JsonSchema for NaiveDateTime

source§

impl<T> JsonSchema for EnumSet<T>where T: EnumSetType + JsonSchema,

source§

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

source§

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

source§

impl JsonSchema for u8

source§

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

source§

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

source§

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

source§

impl JsonSchema for NonZeroU32

source§

impl<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> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

source§

impl JsonSchema for AtomicU64

source§

impl JsonSchema for AtomicU32

source§

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

source§

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

source§

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

source§

impl<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> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

source§

impl JsonSchema for u64

source§

impl<T, const CAP: usize> JsonSchema for ArrayVec<T, CAP>where T: JsonSchema,

source§

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

source§

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

source§

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

source§

impl JsonSchema for bool

source§

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

source§

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

source§

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

source§

impl JsonSchema for i16

source§

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

source§

impl JsonSchema for SmolStr

source§

impl JsonSchema for str

source§

impl JsonSchema for NonZeroI16

source§

impl JsonSchema for AtomicBool

source§

impl JsonSchema for i64

source§

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

source§

impl JsonSchema for Uuid

source§

impl JsonSchema for Number

source§

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

source§

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

source§

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

source§

impl JsonSchema for NonZeroU8

source§

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

source§

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

source§

impl JsonSchema for AtomicIsize

source§

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

source§

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

source§

impl JsonSchema for AtomicUsize

source§

impl JsonSchema for AtomicI32

source§

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

source§

impl JsonSchema for u16

source§

impl JsonSchema for u32

source§

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

source§

impl JsonSchema for NonZeroI32

source§

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

source§

impl JsonSchema for NonZeroI128

source§

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

source§

impl JsonSchema for NonZeroUsize

source§

impl<T: JsonSchema, H> JsonSchema for IndexSet<T, H>

source§

impl JsonSchema for AtomicI64

source§

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

source§

impl JsonSchema for f32

source§

impl JsonSchema for Url

source§

impl JsonSchema for AtomicI16

source§

impl JsonSchema for String

source§

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

source§

impl<Tz: TimeZone> JsonSchema for DateTime<Tz>

source§

impl JsonSchema for CStr

source§

impl<const CAP: usize> JsonSchema for ArrayString<CAP>

source§

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

source§

impl JsonSchema for NonZeroU64

source§

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

source§

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

source§

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

source§

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

source§

impl JsonSchema for NonZeroI8

source§

impl JsonSchema for Path

source§

impl<A> JsonSchema for ArrayString<A>where A: Array<Item = u8> + Copy,

source§

impl JsonSchema for OsStr

source§

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

source§

impl JsonSchema for SocketAddrV6

source§

impl JsonSchema for NaiveDate

source§

impl JsonSchema for SystemTime

source§

impl JsonSchema for BigDecimal

source§

impl<T: JsonSchema, H> JsonSchema for IndexSet<T, H>

source§

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

source§

impl JsonSchema for f64

source§

impl<K, V: JsonSchema, H> JsonSchema for IndexMap<K, V, H>

source§

impl<A: Array> JsonSchema for ArrayVec<A>where A::Item: JsonSchema,

source§

impl<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> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

source§

impl JsonSchema for RawValue

source§

impl JsonSchema for Ipv6Addr

source§

impl JsonSchema for Value

source§

impl JsonSchema for Ipv4Addr

source§

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

source§

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

source§

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

source§

impl<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> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Implementors§