pub trait BuildSchema {
// Required method
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent;
// Provided methods
fn type_name() -> Option<&'static str> { ... }
fn schema_metadata() -> SchemaMetadata { ... }
fn build_schema_node(ctx: &mut SchemaBuilder) -> SchemaNodeSpec { ... }
}Required Methods§
Sourcefn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Build the schema content for this type.
Use ctx.build::<T>() for nested types - this handles caching
and recursion automatically.
Provided Methods§
Sourcefn type_name() -> Option<&'static str>
fn type_name() -> Option<&'static str>
The type name for registration in $types namespace.
Return Some("my-type") to register this type as $types.my-type.
Return None (default) for inline/anonymous types.
Sourcefn schema_metadata() -> SchemaMetadata
fn schema_metadata() -> SchemaMetadata
Optional metadata for this type’s schema node.
Override to provide description, deprecation status, defaults, or examples.
Sourcefn build_schema_node(ctx: &mut SchemaBuilder) -> SchemaNodeSpec
fn build_schema_node(ctx: &mut SchemaBuilder) -> SchemaNodeSpec
Build the full node specification for this type.
Override this method to set ext_types or type_codegen on the node.
The default implementation delegates to build_schema and schema_metadata.
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.
Implementations on Foreign Types§
Source§impl BuildSchema for &str
impl BuildSchema for &str
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for bool
impl BuildSchema for bool
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for f32
impl BuildSchema for f32
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for f64
impl BuildSchema for f64
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i8
impl BuildSchema for i8
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i16
impl BuildSchema for i16
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i32
impl BuildSchema for i32
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i64
impl BuildSchema for i64
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i128
impl BuildSchema for i128
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for isize
impl BuildSchema for isize
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u8
impl BuildSchema for u8
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u16
impl BuildSchema for u16
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u32
impl BuildSchema for u32
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u64
impl BuildSchema for u64
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u128
impl BuildSchema for u128
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for ()
impl BuildSchema for ()
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for usize
impl BuildSchema for usize
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for String
impl BuildSchema for String
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for Text
impl BuildSchema for Text
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static> BuildSchema for (A,)
impl<A: BuildSchema + 'static> BuildSchema for (A,)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static> BuildSchema for (A, B)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static> BuildSchema for (A, B)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static> BuildSchema for (A, B, C)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static> BuildSchema for (A, B, C)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static> BuildSchema for (A, B, C, D)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static> BuildSchema for (A, B, C, D)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static, E: BuildSchema + 'static> BuildSchema for (A, B, C, D, E)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static, E: BuildSchema + 'static> BuildSchema for (A, B, C, D, E)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static, E: BuildSchema + 'static, F: BuildSchema + 'static> BuildSchema for (A, B, C, D, E, F)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static, E: BuildSchema + 'static, F: BuildSchema + 'static> BuildSchema for (A, B, C, D, E, F)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for BTreeMap<K, V>
BTreeMap<K, V> is represented as a map
impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for BTreeMap<K, V>
BTreeMap<K, V> is represented as a map
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for HashMap<K, V>
HashMap<K, V> is represented as a map
impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for HashMap<K, V>
HashMap<K, V> is represented as a map
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for IndexMap<K, V>
IndexMap<K, V> is represented as a map (preserves insertion order)
impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for IndexMap<K, V>
IndexMap<K, V> is represented as a map (preserves insertion order)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Option<T>
Option is represented as a union: some(T) | none(null)
impl<T: BuildSchema + 'static> BuildSchema for Option<T>
Option
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Box<T>
Box delegates to T
impl<T: BuildSchema + 'static> BuildSchema for Box<T>
Box
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Rc<T>
Rc delegates to T
impl<T: BuildSchema + 'static> BuildSchema for Rc<T>
Rc
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Arc<T>
Arc delegates to T
impl<T: BuildSchema + 'static> BuildSchema for Arc<T>
Arc
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Vec<T>
Vec is represented as an array with item type T
impl<T: BuildSchema + 'static> BuildSchema for Vec<T>
Vec
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static, E: BuildSchema + 'static> BuildSchema for Result<T, E>
Result<T, E> is represented as a union: ok(T) | err(E)
impl<T: BuildSchema + 'static, E: BuildSchema + 'static> BuildSchema for Result<T, E>
Result<T, E> is represented as a union: ok(T) | err(E)